前回で制御構文の概略は知ってもらえたので、今回からは順番に詳細を解説していきますね(^^)
はい! よろしくお願いしますm(_ _)m
順番では「For…Next」の繰り返し処理ということですね。
しっかり勉強します(^^)
前回のおさらいはこちらの記事です(^^)/ 下のカードをクリックすれば開きます
前回記事でわかったことは
・制御構文とは何かがわかりました
・制御構文についての概略がわかりました
【この記事でわかることは】
・最も基本的で単純な「For Next」の使い方がわかります
For…Next ステートメント
ループ処理でまず最初に覚えるべきものが、今回説明するFor Nextです。For Nextは、繰り返し処理をするためのステートメントです。マクロVBAで処理を自動化(効率化)する為の必須記述です。ループ処理を使うことによって、Excelシートの全データを短い記述で繰り返し処理できるようになります
For…Next の構文
For…Next ステートメントは、指定した回数だけ、一連のステートメントを繰り返します
【構文】
For counter = start To end [Step step]
[statements]
[Exit For]
[statements]
Next [counter]
パーツ | 説明 |
---|---|
counter | 必須です。 ループ カウンターとして使用する数値変数を指定します。 この変数には、ブール値または配列要素は指定できません。 |
start | 必須です。 counter の初期値を指定します。 |
end | 必須です。 counter の最終値を指定します。 |
step | 省略可能です。ループを繰り返すごとに counter に加算される値を 指定します。(マイナスの数値も指定できます) 省略した場合、ループを繰り返すごとに counter には 1 が加算されます。 |
statements | 省略可能です。指定した回数だけ実行される1 つ以上のステートメントを、 ForとNextの間記述します。 |
For…Next の動きを解説
・先ほどの構文をわかりやすく書くとこんな感じです(^^)
For 変数 = 開始数値 To 終了数値
・・・実行する処理・・・
Next
・stepの指定が無いので、変数が開始数値から終了数値になるまで繰り返すということです
・変数は開始数値から終了数値までの間、Nextに到達すると+1加算されてForに戻っていきます
・終了数値の処理が終わった後、Nextに到達すると+1加算され終了数値を超えたのでLoop終了となります
Exit For でループを抜ける
・For…Next間のステートメント内で Exit For を使えばループの途中でループを中断して抜けることが出来ます
・通常は、ステートメント内の評価によりそれ以降ループする必要なくなったと判断して抜けます
For…Next の注意点
注意点1
・ループで使用した変数の値に注意しましょう。
・それ以降の処理で変数の値を使う場合、変数は終了数値+1となっていることを認識して使用する必要があります
・次の10回ループするサンプルコードを試してみてください(変数は11になっています)
Sub Sample()
i As Long
Dim msg As String
For i = 1 To 10
msg = msg & i & "回目のループ" & vbCrLf
Next i
MsgBox msg & "変数iの数値は" & i & "です"
End Sub
注意点2
・ループ内で counter の値を変更しないようにしましょう
・変更すると、思わぬエラーが発生したりコードの解読とデバッグが困難になる可能性があります
注意点3
・次のサンプルコードのようにループはネストして実行することが出来ます
・一番深いネストで変数msgに文字列を追加しています
・ループ3回×3の文字列がメッセージ表示されます
Sub Sample2()
Dim i As Long, j As Long, k As Long
Dim msg As String
For i = 1 To 3
For j = 1 To 3
For k = 1 To 3
msg = msg & k & "回目のループ" & vbCrLf
Next k
Next j
Next i
MsgBox msg
End Sub
・このサンプルでは、Nextステートメントに counter を指定しています
・Nextステートメントは counter を省略しても、指定されているのと同様に継続されます
・注意しなければならないのは、Nextステートメントに指定する counter を間違って指定するとエラーが発生します。これは、ネストが崩れたために発生するエラーです
・どうしても指定する場合は、ネストを崩さないように指定します
・わたしは指定せずに省略することがほとんどです。ループが長くてコードわかりずらい場合だけ指定しています
まとめ(おわりに)
今回はここで終了です!
For…Next ステートメントは理解できましたか?
はい! よくわかりました。サンプルを実行してみて数値を大きくしてもすぐに処理終わってしまうスピードに改めて驚きました! やっぱりVBAってすごいですね!(^^)!
そうですね! 今回は最も基本的なステートメントでしたから次回以降も期待してくださいね。 次回はFor Each…Nextステートメントです。楽しみに待っていてね(^^)/
まとめと感想など
・マクロ(VBA)を実行する際は必ずバックアップを取ってから行ってください!
・マクロ(VBA)は実行後にファイルを保存すると元に戻すことはできません!
・実行後にファイルを保存せず終了すれば、実行前に戻すことができます!
★★★ ランキング参加中! クリックしてね(^^)/ ★★★
今後の記事について
今回の記事はいかがだったでしょうか。皆さまのお役に立てたなら幸いです(^^;
当面は「初心者向けマクロVBA」の記事を継続して書いていきます
【検討中の今後の記事内容は・・・・・】
・実務に役立つものを提供できるよう現在検討中です
・その他雑記的に「小ネタなどいろいろ」・・・・・
・今後の記事にもご期待ください(^^)/
過去記事のサンプルファイルをダウンロードできます
この記事のサンプルはこのリンク先からダウンロードできます!
過去の記事で使用したサンプルファイルがダウンロードできるページを設置しています
こちら(このリンク先)からご利用ください
・For…Nextステートメントについてしっかりと理解できました
・For…Nextの注意点についても知ることが出来ました