エクセルマニア

VBA For Each Selection Range

TOP > VBA・マクロ >  For~Nextで繰り返し・ループ処理 >  For Eachで複数のセルや、選択したセルのループ処理
このエントリーをはてなブックマークに追加

For Each In~Next を活用したソースサンプルと実行結果


For Each In~Next は配列の数がわからず、ループ回数がわからないデーターやオブジェクトに対して使用でき大変便利です。例えば「選択しているセル」のみ処理したい時などに用います。

複数のセルを指定してループ

A1~A10までのセルを =Range("A1:A10") で指定しループ処理を行います。出力内容はそのセルの行番号を出力しています。

ソースコード

For Each In~Next で複数のセルを指定したサンプルソース

ボタンをクリックした実行結果です。

For文とIF文を組み合わせたVBAサンプルの実行結果

今回使用したソースプログラム

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 とすることで実現できます。

マウスで複数のセルを選択

For Each In~Next でループ処理するためのセルを選択

ソースコード

For Each In~Next で選択したセルを指定してループ処理したVBAサンプルソース

実行結果は選択していたセルにそのセルの行番号を出力しました。

For Each In~Next で選択したセルを指定してループ処理したVBAサンプルの実行結果

今回使用したソースプログラム

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

このエントリーをはてなブックマークに追加