VBAでは同じ処理を何度もしたい時があります。
その場合に手書きで同じ処理を書くのは非効率である場合があります。
そんなときに使うのが『For文』です。
For文とは”回数を指定してその回数分、指定した処理を繰り返す”ためのステートメントになります。
なので、本記事ではFor文である「For Next」「For Each Next」の2つについて解説していきます。
For Next の使い方
ここでは「For Nextの書式」「For Nextを使った簡単な参考コード」を解説していきます。
For Next文の書式
For Next文では『開始数値』と『終了数値』を指定して回数を設定します。
そして、繰り返す際には変数に現時点の数値が代入されますので、繰り返し処理にその変数を使うことも可能です。
最後に、Nextで括りますが、その際には繰り返し範囲で使った変数も記述するようにしましょう。
※変数を記述しなくても処理は行われますが、For文を2重で使うなどネストが深くなる際にはコードが読みづらくなってしまいます。(ほかに理由があったら申し訳ない)
【参考コード】指定した数だけ繰り返す
では、さっそく実際のFor Next文を確認していきます。
下は「1,2,3の数値3回、処理を繰り返す」というコードになっています。
1 2 3 4 5 6 7 8 9 |
Sub sample1() Dim i As Long For i = 1 To 3 Debug.Print "現在は「" & i & "」回目です" Next i End Sub |
上のコードでは3回繰り返され、そのたびに変数iに現時点の指定した数値(1→2→3)が代入されていきます。
ちなみに結果は下のようになります。
For Each Next の使い方
次に「For Each Nextの書式」「For Each Nextを使った簡単な参考コード」を解説していきます。
For Each Next文の書式
For Each Next文では『コレクション・配列の要素数』分、処理を繰り返します。
そして、繰り返す際には変数に現時点の配列の要素を代入されますので、繰り返し処理にその変数を使うことも可能です。
最後にNextで括ります。
【参考コード】配列の「要素数」分、処理を繰り返す
ここでは配列を使って実際のFor Each Next文を確認していきます。
下は「5つの要素数を持つ配列を使って、処理を繰り返す」というコードになっています。
1 2 3 4 5 6 7 8 9 10 |
Sub sample2() Dim numbers As Variant numbers = Array(1, 2, 3, 4, 5) For Each num In numbers Debug.Print num Next End Sub |
上では要素数が5つの配列(numbers)があります。
その配列をFor Each Next文で指定し、その要素数分繰り返すようにしています。
ちなみに処理内容は配列に入っている数値をイミディエイトに出力するようにしています。
上のコードを実行すると下のような結果になります。
【参考コード】指定した「セル数」分、処理を繰り返す
次にエクセルシート上にあるセルを使ったパターンになります。
下は「セル範囲(B2~C8)のセル数分処理を繰り返す」というコードになっています。
1 2 3 4 5 6 7 8 9 |
Sub sample3() Dim r1 As Range For Each myRange In Range("B2:C8") myRange.Value = "〇" Next End Sub |
上では5行目で14つのセルを指定しているので、処理は14回繰り返されるようにしています。
ちなみに処理内容は指定したセル範囲のセルに”〇”を入力するといった感じです。
そして、上を実行した結果は下のようになります(太線の外枠は別)。
【おまけ】FOR文では増減数を指定できる
基本的にFOR文でのカウントは1ずつ増加していきます。
ですが、その「1ずつ増加」を『Step』を使うことで「〇ずつ増加(減少)」にすることができます。※減らす場合は「-」をつける。
その記述は下の通りです。
For i = 開始数値 To 終了数値 Step 増減数
ちなみに下では「1から2ずつ増加させて10まで繰り返す」という内容で動かしてみます。
1 2 3 4 5 6 7 8 9 |
Sub sample4() Dim i As Long For i = 1 To 10 Step 2 Debug.Print i Next End Sub |
上を実行すると下のような結果が得られます。
1位 | 2位 | 3位 |
---|---|---|
Excel VBA 脱初心者のための集中講座 | パーフェクトExcel VBA | ExcelVBA 実戦のための技術 |
初心者~中級者 | 中級者 | 初心者~中級者 |
【初心者が手に取るべき参考書】 ・「書籍+動画」で圧倒的に理解しやすい入門書になっている。 ・丁寧で詳しい解説でボリューム感がある。 | 【より深い理解をしたい方にお勧めな参考書】 ・テーマに対して丁寧な解説・適度な深さで解説されている。 ・幅広くテーマを扱っていることから、基礎知識をあらかた網羅できる。 | 【入門書と一緒に買うべき参考書】 ・1つ1つのテーマを経験豊富なエンジニア視点で解説してくれている。 ・実践的で効果的なコードの書き方が理解できる。 |
【読んでみた一言】 正直、入門書はコレ一冊でいいかも。あとは中級者用の参考書に進むべし。 | 【読んでみた一言】 深く書かれているが、少々専門的に書かれていることから、読む前に数冊の入門書を読破したほうが良い。 | 【読んでみた一言】 基礎知識を持っている人が次のレベルに達するきっかけを与えてくれる参考書である。 |
スポンサーリンク