一回も披露したことのない豆知識

エクセルで、例えば

Range("A5:A30")と、範囲指定した場合、この間で
1つ置きにセルを把握させたい場合(A5→A7→A9。。。)
どのような記述になるでしょうか?

マクロを実行すると
Range("A1:A30,A3,A5,A7,A9。。。").Selectとなって
しまい、結局は1つずつ指定するしかないさそうなのです
が、広範囲になると、これでは追いつきませんし。。。
for文のstepなどの記述の仕方ってできないんでしょうか?

よろしくお願いします。

A 回答 (3件)

#1,2です




どうしても文字列で指定したいのなら、
Const myRange As String = "A1,A3,A5,A7,A9"
Range(myRange).Select
と表現すると幾分すっきりします。

ただし、
Rangeで指定できるセル(文字数?)には限りがあったと思います。
指定する件数が少ない場合は問題ないですが、
件数が多くなるようなら
可能な限りループで処理されることをお勧めします。


補足ですが、行や列、連続した範囲の指定は次のようにやります。

Rows(1).Select '行のセレクト
Columns(1).Select '列のセレクト
Range(Cells(1, 1), Cells(3, 3)).Select 'A1:C3のセレクト
    • good
    • 0
この回答へのお礼

なるほど、勉強になりました。
今回はfor文でまわす方法で行うことにしました。

ご丁寧にありがとうございます。

お礼日時:2003/06/26 12:34

#1です。



例が悪かったですね。(Stepを使ってない)
こんなんとか。

Sub test()
Dim i As Long

For i = 1 To 100 Step 2
Cells(i, 1).Value = i
Next i

End Sub
    • good
    • 1
この回答へのお礼

さっそくのご回答、ありがとうございます。
そうですね、for文でまわす方法は考えましたが
せっかくのエクセル上での処理なので、Rangeで
範囲指定した内容で1つずつ飛ばす方法はないか
と思いまして、質問させて頂いた次第です。
やはりfor文でまわす方法が良いようですね。

ちなみに範囲は固定です(行)。

ありがとうございました。

お礼日時:2003/06/26 11:02

こんにちは。



範囲選択しないと処理できないんでしょうか。
実際の処理を見て見なければなんともいえませんが。

質問にもあるとおり、For~Nextでループをまわしながら、
ループの中で、1こずつセルを選択して、
処理すれば実現できると思いますが。

ちなみにループ内でセルを指定するには
Range("A1").Selectよりも
Cells(1,1).Selectのほうが便利です。


ループ処理の例としては、
For i = 1 to 100
 Cells(i,1).Value = i
Next
みたいな。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報