マクロ講座超入門14回 For Nextステートメント

Excel塾のマクロ講座超入門14回
VBAのFor~Nextステートメントで決めた回数繰り返す
動画版「Excel塾のマクロ講座超入門14回」です。
この動画ではVBAにおける繰り返し処理や条件分岐について解説していきます。
今回はFor ~Nextステートメント についてです。
繰り返し処理にはその内容に応じて、For ~Nextステートメント 、For Each Nextステートメント 、Do Loopステートメント 等があります。VBAにおける繰り返し処理や条件分岐について解説していきます。
For~Nextステートメントで決めた回数繰り返す
毎日のExcelの作業で大変な繰り返し処理を扱うコード
VBAの繰り返し処理には、For Nextステートメントを使ったり、For Eachステートメントを使ったり、Do Loop ステートメントを使います。

For Nextステートメントは、特定の回数だけ処理を繰り返す場合に使われます。 For...Nextステートメントにおける繰り返し処理のことをループ処理、 または、「ループ」と呼びます。 For...Nextステートメントでは、終了条件が満たされていない場合に、ループ内のステートメントが再 び実行され、終了条件が満たされた場合に、ループから抜け出してNextステートメントの次のステートメ ントに処理が移ります。

サンプルで見てみましょう。
以下の図では”行は変数”という変数が1から10まで変わります。
すると レンジ A 1 から A 10まで変わっていくことになり、 そのRange("A" & 行は変数).Valueは、”行は変数”の3倍となります。

Sub Macrosample() ' For...Next A1:A10まで Dim 行は変数 As Long For 行は変数 = 1 To 10 Range("A" & 行は変数).Value = 行は変数 * 3 Next 行は変数 End Sub
”行は変数”という変数が不思議に思った方もいるかもしれません。VBAでは、
変数に日本語が使えますから、わかりやすい日本語を変数にしても良いのです。
また、As Long という型がおかしい、As Integer ではないのか?と思った方は、古いExcelの記憶がある方かもしれません。
2016年頃から、ExcelではIntegerを内部でLong型に変換しており、コード上に書かれているIntegerをすべてLong型で処理しているのです。
ですから、変数が整数の場合に、Integerと書くことは間違いではありませんが、Long型に統一した方がExcelVBA的にはやさしい書きかたかもしれません。

繰り返しの変数としてよく使われるのが、 i ですが、他にもj,k,l,m,n... 等が使われます。

ステップ実行で1行ずつの処理を確認する
マクロはコードを1行1行確認しながら実行する、「ステップ実行」という確認作業ができます。
ステップ 実行を行うことで、対応するコードがどのような動きをしているのか、ゆっくり目で確かめながら確認できます。

実行するプロシージャ内にカーソルを置いて、F8キーを押すか、メニューのでバックからステップインをクリックします。

A1:A10の範囲には、何も値が入っていませんが、マクロ実行するにつれて、”行は変数”が1の時には、3が入力され、2の時には6が入力されるのがわかります。

変数が10になると、次の11では処理はされずに、End Subに処理が移動し終了します。

変数を日本語から i に変えて行っても結果は同じです。

繰り返しの増加値を1以外にする Stepキーワード
1回目の次は3回目、その次は5回目などというように、1回のループで増加する値を1以外にしたい場合は、
Stepキーワードを使って指定します。
以下のサンプル画では、A1:A10までの背景色がColorIndex = 8で塗られていますが、その後で、 i の値が2つずつ増加するように、Step 2で対象のセルの背景をColorIndex = 15で塗っています。

Sub Macrosample() ' For...Next A1:A10まで Dim i As Long For i = 1 To 10 Step 2 Range("A" & i).Interior.ColorIndex = 15 Next i End Sub