For Each Nextとは配列や指定した範囲の要素の数だけ処理を繰り返すステートメントです。
配列や範囲を引数とするので、For Nextと異なり直接のループ数を意識する必要がありません。
For Each Nextステートメントとは
■ For Each 〜Nextの構文
For Each 変数 In 配列や範囲
処理
Next 変数
For Each Nextの使用例
2種類のFor Each Nextの使用例を作成しました。「MyForEach1」のプロシージャです。
実行すると要素の内容をセルに入力します。
- For Each r In smon : 配列のデータを配列の要素数だけループしセルに入力していきます。
- For Each r In rng : 範囲のデータを範囲数だけループしセルに入力していきます。
入力したコードです。
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回ループし入力しています。
Excelマクロのサンプルファイル:
フリーダウンロード
Copyright (C) excel.usefulhp.com All rights reserved.