• ベストアンサー

範囲指定したセルを1つずつ飛ばす方法

エクセルで、例えば Range("A5:A30")と、範囲指定した場合、この間で 1つ置きにセルを把握させたい場合(A5→A7→A9。。。) どのような記述になるでしょうか? マクロを実行すると Range("A1:A30,A3,A5,A7,A9。。。").Selectとなって しまい、結局は1つずつ指定するしかないさそうなのです が、広範囲になると、これでは追いつきませんし。。。 for文のstepなどの記述の仕方ってできないんでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • happypoint
  • ベストアンサー率36% (521/1422)
回答No.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のセレクト

siamzou
質問者

お礼

なるほど、勉強になりました。 今回はfor文でまわす方法で行うことにしました。 ご丁寧にありがとうございます。

その他の回答 (2)

  • happypoint
  • ベストアンサー率36% (521/1422)
回答No.2

#1です。 例が悪かったですね。(Stepを使ってない) こんなんとか。 Sub test() Dim i As Long For i = 1 To 100 Step 2 Cells(i, 1).Value = i Next i End Sub

siamzou
質問者

お礼

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

  • happypoint
  • ベストアンサー率36% (521/1422)
回答No.1

こんにちは。 範囲選択しないと処理できないんでしょうか。 実際の処理を見て見なければなんともいえませんが。 質問にもあるとおり、For~Nextでループをまわしながら、 ループの中で、1こずつセルを選択して、 処理すれば実現できると思いますが。 ちなみにループ内でセルを指定するには Range("A1").Selectよりも Cells(1,1).Selectのほうが便利です。 ループ処理の例としては、 For i = 1 to 100  Cells(i,1).Value = i Next みたいな。

関連するQ&A