For Each Nextとは配列や指定した範囲の要素の数だけ処理を繰り返すステートメントです。

配列や範囲を引数とするので、For Nextと異なり直接のループ数を意識する必要がありません。

For Each Nextステートメントとは

■ For Each 〜Nextの構文

For Each 変数 In 配列や範囲
  処理
Next 変数

For Each Nextの使用例

2種類のFor Each Nextの使用例を作成しました。「MyForEach1」のプロシージャです。
実行すると要素の内容をセルに入力します。
マクロプログラムの入力画面

入力したコードです。

Sub MyForEach1()
    Dim smon() As Variant
    Dim rng As Range
    Dim i As Long
        
    smon() = Array("1月", "2月", "3月", "4月", "5月")
    i = 3
    For Each r In smon
        Cells(i, 2) = "ForEach=" & r
        i = i + 1
    Next
    
    i = 3
    Set rng = Range("B4:B6")
    For Each r In rng
        Cells(i, 3) = r
        i = i + 1
    Next
    
End Sub

コードの説明

Subプロシージャの宣言
Sub MyForEach1()
配列変数の宣言
Dim smon() As Variant
Rangeオブジェクトの宣言
Dim rng As Range
長整数型変数の宣言
Dim i As Long
配列にデータを代入
smon() = Array("1月", "2月", "3月", "4月", "5月")
行の開始位置
i = 3
配列要素のループ
For Each r In smon
配列データをセルに入力
Cells(i, 2) = "ForEach=" & r
行位置を+1
i = i + 1
For Eachループの終了
Next
行の開始位置
i = 3
セルの範囲をオブジェクト型変数に代入
Set rng = Range("B4:B6")
セルの範囲をループ
For Each r In rng
セルのデータを入力
Cells(i, 3) = r
行位置を+1
i = i + 1
For Eachループの終了
Next
プロシージャの終了
End Sub

For Each Nextマクロの実行

作成したMyForEach1のプロシージャです。これを実行します。
マクロを実行

B列はsmon配列のデータを3行目から、配列の数だけループし入力しています。
C列は B4:B6 範囲のデータを3行目から、B4:B6ですから3回ループし入力しています。
For Each Nextマクロの実行結果

Excelマクロのサンプルファイル:フリーダウンロード








Copyright (C) excel.usefulhp.com All rights reserved.