繰り返し処理(For~Nextステートメント)

VBA(プログラム)は、条件分岐繰り返しの組み合わせに尽きます。
確実に覚えましょう。

繰り返し処理は次のような場合に使用します。

  • 1日 2日 3日 ・・・ 31日 と日付毎に処理を繰り返す
  • 設置機種の 海物語→仕事人→水戸黄門→エヴァ と処理を繰り返す
  • グループ店 A店→B店→C店 と処理を繰り返す

繰り返し処理は 「For~Nextステートメント」「Do~Loopステートメント」を使用します。
ここでは「For~Nextステートメント」を解説します。

書式
For 変数名 = 初期値 To 終了値

  処理

Next 変数名

例)

都道府県名が入力されている一覧があります。
左から2文字だけを抜き出して右隣のセルに入力させます。

Sub サンプル1()

  Dim i As Long

  For i = 1 To 10

    Cells(i, 2).Value = Left(Cells(i, 1).Value, 2)

  Next i

End Sub

[jin_icon_info color=”#e9546b” size=”18px”]Leftは文字列の左端から指定した文字数分の文字列を返す関数です。

実行した結果は下のようになります。

Cells(i, 2).Value = Left(Cells(i, 1).Value, 2) の部分は
Cells(i, “B”).Value = Left(Cells(i, “A”).Value, 2)
と表記させる事ができます。
列の部分を A列→B列→C列 と繰り返しの必要がない場合は数値での記述が不要です。
コードをこのようにすることで可読性が上がります。

 

Next i の部分について補足です。
Next i の i(変数名) は省略することも可能です。
ネットや専門書などでも省略されているものも少なくありません。
私は省略せず変数名を記述することをお勧めします。

その理由は実務的なVBAではFor~Nextの中に複数の For~Next や その他のステートメントがあります。
Next の後に変数名があるとこのForがどのNextとセットなのか直ぐに分かるからです。

上図はサンプルで作成しましたが、実務で使用するコードはもっと長くなりスクロールしないと全体を見ることができません。
変数名を入れることで可読性が上がります。

VBAは作って終わりではありません。
ミスがあるかもしれません。修正があるかもしれません。
後から可読性が低いとメンテナンスを行うときに大変苦労をします。
出来るだけ丁寧にコードを記述するよう心掛けて下さい。