[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『複数の列を選択したい』(たけちゃん)
教えて下さい。 下記のコードのように、複数の行や列を、変数を使って選択したいと 考えています。
複数の行なら、Test1 でOK。 1列だけなら、Test2 でOK。 複数の列でも、Test3 はOK。
しかし、複数の列を数値変数を使って選択しようとすると エラーになります(Test4)。
Test1〜Test3 がOKであるにもかかわらず、Test4だけNGなのは なぜでしょうか。 R1C1参照形式の関係でもありませんでした。
どうやったら、複数列を数値変数を使って選択できますか。 よろしくお願いします。 Excel2000、XPです。
'--- Test1 --- x = 1 y = 5 Rows(x & ":" & y).Select 'これはOK
'--- Test2 --- x = 1 Columns(x).Select 'これはOK
'--- Test3 --- x = "A" y = "E" Columns(x & ":" & y).Select 'これはOK
'--- Test4 --- x = 1 y = 5 Columns(x & ":" & y).Select 'これはNG:アプリケーション定義またはオブジェクト定義のエラー発生
'--- Test4 --- x = 1 y = 5 Range(Cells(1, x), Cells(1, y)).EntireColumn.Select
Columns("1:5").Select がエラーになる以上、↑こんな書き方に なるんですかね? (純丸)(o^-')b
'--- Test4 --- x1 = 1 y1 = 5 x = ・・・( x1 関数で1をAに 変換 Columns(x & ":" & y).Select
↑どなたでしょう? HNをお願いします。 それも一法ですね。ただ、AA列 以上が簡単に指定出来ないのが難点です。 「列」ではなく「セル範囲」なら、 Range(Cells(1, x), Cells(Rows.Count, y)).Select と書けます。 (純丸)(o^-')b
回答ありがとうございます。 「Range」を使用する方法は分かっていたのですが、「Columns」を使いたかったのです。
Test4 だけうまくいかないのが合点がいかないものですから。 何か簡単でうまい方法はないですかねー。 (たけちゃん)
"1:5" は「一行目から五行目」を現すセル範囲の暗黙に定義された名前です。 列単位のRangeオブジェクトを返すColumnsで行範囲の名前を指定するのだから、 列範囲を取得するには不適当。 x = 1 y = 5 Columns(x).Resize(, y - x + 1).Select 理屈はこれでも合うけど、考えすぎ? (みやほりん)(-_∂)b
こんな感じでは?
Dim x, y x = 1 y = 10 x = Replace(Cells(1,x).Address(0,0),"1","") y = Replace(Cells(1,y).Address(0,0),"1","") Columns(x & ":" & y).Select (seiya)
そっか、Chr じゃなく Address 使えば AA列以降でも関係ありませんね。 (純丸)(o^-')b
(純丸)さん、 なーんだ...って感じですよね。 でも、むりやり変換しなくても連続した列ならみやほりんさんの Resizeを使用したほうがすっきりしますよね?
それと、HNの無い投稿は無視しましょうよ。ね? (seiya)
x = 1 y = 5 x = mid(" A B C D E F G H I J K L M N O P QAA", x*2-1,2) y = mid(" A B C D E F G H I J K L M N O P QAA", y*2-1,2) Columns(x & ":" & y).Select てな方法も ((JJ))
みなさん有難うございました。勉強になりました。
"1:5" は「一行目から五行目」を現すセル範囲の暗黙に定義された名前 なのですね。
実現方法も理解できました。いろいろとあるものですね。またよろしくお願いします。 (たけちゃん)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.