【VBA】配列の要素を全て取り出せる!For Each〜Next文の使用方法【5分で理解】
配列の要素を全て繰り返す処理を知ってますか?
Excelマクロ(VBA)には数種類の繰り返し処理が存在してます。
本記事では配列やコレクションの要素を全て処理できる「For Each〜Next」分の使用方法を説明します。
5分で誰でもわかることを目標に説明します。よろしくお願いします!
では、確認していきましょう。
- VBAの繰り返し処理を学習中の人
- 配列の要素を全て処理したい人
- コレクションの要素を全て処理したい人
関連記事
For Each〜Next文の基本
はじめにFor Each文の使用用途と基本構文について説明します。
使用する上で基本的な部分になるので確実にチェックしましょう!
使用用途
どのような時に使用するのか、どのような処理に向いているかです。
- 配列の要素を全て取り出す時に使用される
- VBAコレクションの要素を全て取り出す時に使用される
上記2点の時に使用されることが多い構文です。
For〜Next分でも処理は可能なのですが、For Each〜Next分で作成した方がソースコードの行数が少なくなるため、配列の要素を処理する際はFor Each分を使用することをおすすめします。
基本構文
For Each〜Next分の基本構文について説明します。
[For] [Each] [in] [Next]については定型です。
どのようなプログラムでも変わることはないので変化しないということを覚えましょう。
testArrayは配列(もしくはコレクション)の変数を記入してください。
[処理]は今回のループで実行される処理を入力する部分です。
Valueは配列の要素を一時出来に格納される変数です。
配列もしくはコレクションのループができますが、本記事では配列を例に説明します。
次の章からはより詳しく確認してきます。
For Each〜Next文の使用例
配列の中の要素を全て出力する簡単なサンプルプログラムを紹介します。
For Each〜Next文を使用した場合と使用しない場合の2種類で比較していきます。
For Each文を使用しない場合
For Each文を使用しなかった場合のサンプルプログラムです。
17行目以降を確認してみてください。配列の要素を一つずつ順番に出力していることがわかります。
Sub noForEach()
' 変数の宣言
Dim testArray(10)
'変数に要素を代入
testArray(0) = "black"
testArray(1) = "red"
testArray(2) = "blue"
testArray(3) = "yellow"
testArray(4) = "cyan"
testArray(5) = "magenta"
testArray(6) = "green"
testArray(7) = "pink"
testArray(8) = "orange"
testArray(9) = "Purple"
' 配列の要素を全て出力
MsgBox testArray(0)
MsgBox testArray(1)
MsgBox testArray(2)
MsgBox testArray(3)
MsgBox testArray(4)
MsgBox testArray(5)
MsgBox testArray(6)
MsgBox testArray(7)
MsgBox testArray(8)
MsgBox testArray(9)
End Sub
For Each文を使用した場合
For Each文を使用した場合のサンプルプログラムです。
こちらも17行以降を確認してください。
繰り返し文を使用していることがわかります。
より詳しい説明は次の章で確認していきます。
Sub forEach()
' 変数の宣言
Dim testArray(10), value
'変数に要素を代入
testArray(0) = "black"
testArray(1) = "red"
testArray(2) = "blue"
testArray(3) = "yellow"
testArray(4) = "cyan"
testArray(5) = "magenta"
testArray(6) = "green"
testArray(7) = "pink"
testArray(8) = "orange"
testArray(9) = "Purple"
'ForEach文の開始
For Each value In testArray
' 配列の要素を全て出力
MsgBox value
' ループ
Next value
End Sub
For Each〜Next文の処理を確認
For Each文を1行ずつ説明していきたいと思います。
なお、サンプルプログラムの17行以降を例に説明したいと思います。
'ForEach文の開始
For Each value In testArray
' 配列の要素を全て出力
MsgBox value
' ループ
Next value
処理の流れの確認
処理の内容を一つずつ確認していきます。
For Each〜Nextの文が最後まで終わったらNext以下の処理が継続されます。
①配列testArrayの要素(0)がValueに代入される
②valueに代入された要素が出力される
③nextまで処理されたら最初に戻る
④testArrayの次の要素が変数valueに代入される
⑤valueに代入された要素が出力される
⑥同じ処理が配列の要素の最後まで繰り返される
以上、処理ごとの説明でした。
処理がわからない場合は1つずつ処理を確認すると理解が深まりますのでおすすめです。
まとめ
いかがだったでしょうか
For Each文を使用した繰り返し処理の説明でした
配列の要素を全て処理する際に使用されるということを覚えましょう
いろいろな繰り返し文を覚えて効率的なコードの作成ができるようにしていきましょう!
関連記事
ディスカッション
コメント一覧
まだ、コメントがありません