[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『複数の列を選択したい』(たけちゃん)
教えて下さい。 下記のコードのように、複数の行や列を、変数を使って選択したいと 考えています。
複数の行なら、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.