これまでに数値で繰り返し・ループ処理ができるFor Next☟
【VBA知識 7】FOR…NEXTで指定した数値で繰り返し・ループ動作をする。 – 独学エクセル塾 (dokugakuexcel.com)
条件を設定して繰り返し・ループ処理をする Do Loop☟
【VBA知識 8】Do…Loopで条件まで繰り返し・ループ動作をする方法 – 独学エクセル塾 (dokugakuexcel.com)
について説明してきました。
今回は配列内で繰り返し・ループができるFor Eathについて説明しています。
それでは見ていきましょう。
■For Eath の構造
まずは構造から見ていきましょう。
Dim 変数名 AS 変数の型
For Each 変数名 In 配列・コレクション
‘処理
Next 変数名
Dim 変数名 AS 変数の型
変数名は何でも構いません。
変数の型は繰り返し・ループ処理をしたい型を選択します。
セルの範囲であれば「Range」、シートであれば「Worksheet」を選択します。
For Each 変数名 In 配列・コレクション
Forで繰り返し・ループの開始を宣言します。
変数名はDimで宣言した変数名を入力してください。
配列コレクションについては繰り返し・ループしたい配列を入力します。
例として・・・
A1:C5内で繰り返し処理・ループ処理
Range("A1:C5")
ブック内のシートを繰り返し・ループ処理
Worksheets
開いているブックを繰り返し・ループ処理
Workbooks
などでも繰り返し・ループ処理ができます。
指定したブックを開いているか、指定したシートが存在するかなど
にも使用されています。
Next 変数名
こちらでループの終わりを宣言します。
見本では選択した配列内で「処理」を繰り返し・ループ処理するようになります。
■実践
それでは実践に移りたいと思います。
今回はイメージしやすいように数パターン用意しました。
・範囲内で繰り返し・ループ処理
B2:G5でプラス1づつ足した数値を繰り返し・ループ処理してみましょう。
Sub B2からG5でプラス1を実行()
Dim A As Range, B As Long
B = 1
For Each A In Range(“B2:G5”)
A = B
B = B + 1
Next A
End Sub
こちらを実行すると・・・
配列内で繰り返し・ループ処理してくれてますね。
・シートで繰り返し・ループ処理
次は開いているブック内の存在するシートをB2から行方向に入力するプログラムです。
Sub 開いているシートを記入()
Dim A As Worksheet, B As Long
B = 2
For Each A In Worksheets
Cells(B, 2) = A.Name
B = B + 1
Next A
End Sub
変数をWorksheetに変更します。
実行すると…
存在するシート名を入力してくれています。
仮に変数をアクティブにして処理プログラムを入れると
全てのシートに同じ処理を繰り返ししてくれるプログラムとなります。
変数の型をWorkbookにすれば上記のシートの例を
ブックバージョンにすることもできます。
■ループを抜き出す方法
ここではFor….Eachでループを抜け出す方法を紹介します。
使用するのはIf…Thenと呼ばれる条件分岐とGotoになります。
仕組みとしてはIf…Thenで指定した条件に当てはまるか確認し、
結果にあわせてGotoでプログラムを飛ばします。
詳しくは下記記事でまとめていますので参考にしてみてください☟
【マクロVBA知識 11】GoToでプログラムを指定した場所まで飛ばす方法について Excel ► 独学エクセル塾 (dokugakuexcel.com)
■練習問題
練習問題も別の記事でまとめているので是非参考にしてみてください!
⬛︎公式
わかりやすいように説明したため公式と使用する語句が異なりますが
マイクロソフト公式の説明については下記のリンクを参照してください。☟
For Each…Next ステートメントを使用する (VBA) | Microsoft Learn
■まとめ
いかがだったでしょうか。
For Next と Do Loop と使い分けることで
パターンにあった処理をしてみてください!
では次回の記事でお会いしましょう。次回の記事はこちらから☟
【VBA知識 11】GoToでプログラムを指定した場所まで飛ばす方法について Excel ► 独学エクセル塾 (dokugakuexcel.com)