本ページには広告が含まれています。

Excel VBAループ処理 For Next(初心者向け15)

Excel VBAループ処理 For Next(初心者向け15)
くるみこ
くるみこ

前回で制御構文の概略は知ってもらえたので、今回からは順番に詳細を解説していきますね(^^)

はい! よろしくお願いします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 つ以上のステートメントを、
ForNextの間記述します。

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ステートメントです。楽しみに待っていてね(^^)/

まとめと感想など

For…Nextステートメントについてしっかりと理解できました
For…Nextの注意点についても知ることが出来ました

マクロ(VBA)を実行する際は必ずバックアップを取ってから行ってください
・マクロ(VBA)は実行後にファイルを保存すると元に戻すことはできません!
・実行後にファイルを保存せず終了すれば、実行前に戻すことができます!

★★★ ランキング参加中! クリックしてね(^^)/ ★★★

今後の記事について

今回の記事はいかがだったでしょうか。皆さまのお役に立てたなら幸いです(^^;
当面は「初心者向けマクロVBA」の記事を継続して書いていきます

【検討中の今後の記事内容は・・・・・】
・実務に役立つものを提供できるよう現在検討中です
・その他雑記的に「小ネタなどいろいろ」・・・・・
・今後の記事にもご期待ください(^^)/

スポンサーリンク

過去記事のサンプルファイルをダウンロードできます

この記事のサンプルはこのリンク先からダウンロードできます

過去の記事で使用したサンプルファイルがダウンロードできるページを設置しています
こちら(このリンク先)からご利用ください