
VBAのfor~Eachとは?解説と使用例
はじめに…
日常や仕事で、「この範囲のセルを使って、繰り返し処理をしたい」と思ったことはありませんか?
VBAのfor~Each文を使うと、短時間で作業を終えることができるかもしれません。
for文には、主に「for~Next」「for~Each」の2種類があります。
使い分けとしては、「for~Next」は「〇回処理を繰り返したい」、「for~Each」は「配列や指定したセルの値を順番に処理を繰り返したい」になります。
ここでは「for~Each」の解説を行います。
目次
1.for~Each文について
1-1.for~Each文とは
ツール等を作成していて、同じ命令を何回も繰り返すときはありませんでしたか?
for文は、「ある命令を指定した回数だけ繰り返す」処理を行うことができます。
1-2.for~Each文の構文
for~Each文の基本的な構文は下記になります。
Sub main()
Dim i As Integer
For Each [要素を受け取る変数名] In [配列やグループ名、セルの範囲]
[繰り返したい命令]
Next
End Sub
2.for~Each文の使用例
2-1.基本的な使用例
for~Each文は、配列やシートで指定したセル値を繰り返し使用できます。
for~Nextで囲まれた処理を、配列の要素数分、または指定したセル数だけ繰り返します。
※ for~Next文と違い、Nextの後ろに何も指定しません。
2-2-1.指定した配列の要素分、処理を繰り返す
例)配列arrの要素を連結して出力する。
Sub main02()
Dim arr() As Variant
arr = Array("あ", "い", "う", "え", "お")
Dim str As Variant
Dim wk As String
For Each str In arr
wk = wk + str
Next
MsgBox wk
End Sub
2ー2ー2.セルを指定して繰り返す
2-2-1.では配列を指定していましたが、セルを指定してその範囲を繰り返し行うこともできます。
下記範囲のセルを使用します。
Sub main03()
Dim str As Variant
Dim wk As Variant
For Each str In Range("A1:A8")
wk = wk + ", " + str
Next
MsgBox wk
End Sub
3.注意点
複数列のセル範囲を指定した場合、for~Eachでの取得順に気をつける必要があります。
下記の例だと、「A1、B1、A2、B2・・・」の順番になります。
下記範囲のセルを使用します。
Sub main04()
Dim str As Variant
Dim wk As Variant
For Each str In Range("A1:B4")
wk = wk + " " + str
Next
MsgBox wk
End Sub
4.最後に
for~Each文は、指定した値(文字列)を使って処理を繰り返します。
使いこなすことで、同じ内容を繰り返し行う作業の時間短縮を図ることができます。
ぜひ、活用していってください。









コメント