For Each In~Next を活用したソースサンプルと実行結果
For Each In~Next は配列の数がわからず、ループ回数がわからないデーターやオブジェクトに対して使用でき大変便利です。例えば「選択しているセル」のみ処理したい時などに用います。
複数のセルを指定してループ
A1~A10までのセルを =Range("A1:A10") で指定しループ処理を行います。出力内容はそのセルの行番号を出力しています。
ソースコード
ボタンをクリックした実行結果です。
今回使用したソースプログラム
Private Sub CommandButton1_Click()
Dim r As Range
Dim r2 as Range
Set r = Range("A1:A10") '複数のセルをオブジェクト変数に代入
For Each r2 In r 'For Each でループ処理
r2.Value = r2.Cells.Row '各セルの行番号を出力
Next r2
End Sub
選択したセルを指定してループ
今度はセルをプログラムで指定せずに、マウスなどで選択したセルに対してループ処理を行います。 =Range("A1:A10") を Selectionオブジェクトを使用して Set r = Selection とすることで実現できます。
マウスで複数のセルを選択
ソースコード
実行結果は選択していたセルにそのセルの行番号を出力しました。
今回使用したソースプログラム
Private Sub CommandButton1_Click()
Dim r As Range
Set r = Selection '選択したセルをオブジェクト変数に代入
For Each r2 In r
r2.Value = r2.Cells.Row '各セルの行番号を出力
Next r2
End Sub