Excel VBA | 超初心者(Excel操作+マクロ体験):基本文法 – For文

Excel VBA VBA
スポンサーリンク

For文は「決まった回数だけ同じ処理を繰り返すための仕組み」

For文は、
「この処理を、何回も、順番に、機械的に繰り返したい」
というときに使う“ループ”の文です。

人間の言葉にすると、

「i を 1 から 10 まで変えながら、同じ処理を10回やってね」

という命令を、コードとして書けるのが For文です。

Excel VBA では特に、
「1行目から10行目まで」「A列からD列まで」
のように“範囲を順番に回る”処理がとても多いので、For文は必須スキルになります。


For文の基本構文と「カウンタ変数」のイメージ

一番シンプルな形

基本形はこうです。

For 変数 = 開始値 To 終了値
    ' 繰り返したい処理
Next 変数
VB

例えば、1から5まで数えるだけの例はこうなります。

Sub SampleForBasic()

    Dim i As Long

    For i = 1 To 5
        MsgBox i
    Next i

End Sub
VB

動きを言葉で追うと、

  1. i に 1 が入る
  2. 中の処理(MsgBox i)が実行される → 1 が表示される
  3. Next i で i が 1 増えて 2 になる
  4. まだ終了値(5)以下なので、もう一度中の処理 → 2 が表示される
  5. これを i = 5 まで繰り返す
  6. i が 6 になった時点で「5を超えたので終了」

という流れです。

ここでの i は「カウンタ変数」 と呼ばれます。
「今、何回目のループなのか」「今、何行目を処理しているのか」を表す“ループの番号札”だと思ってください。


For文で「行を順番に処理する」典型パターン

1行目から10行目までに同じ値を入れる

Excel VBAらしい例を見てみましょう。

Sub SampleForRows()

    Dim i As Long

    For i = 1 To 10
        Range("A" & i).Value = i
    Next i

End Sub
VB

このコードは、

  • A1 に 1
  • A2 に 2
  • A3 に 3
  • A10 に 10

というふうに、A列の1~10行目に連番を入れていきます。

ポイントはここです。

  • For i = 1 To 10
    → i が 1,2,3,…,10 と変化しながらループする
  • Range(“A” & i)
    → i が 1のときは “A1″、2のときは “A2” … というふうに、セル番地が変わる

「カウンタ変数 i を、セル番地の一部として使う」
これが、For文とExcelの相性が抜群にいい理由です。


Step で「増え方」を変える(2ずつ・逆順など)

Step 2 で「2ずつ増やす」

For文は、Step を指定することで「増え方」を変えられます。

For 変数 = 開始値 To 終了値 Step 増分
VB

例えば、1,3,5,7,9…と「2ずつ」進めたいときはこうです。

Sub SampleForStep2()

    Dim i As Long

    For i = 1 To 10 Step 2
        MsgBox i
    Next i

End Sub
VB

この場合、i は 1 → 3 → 5 → 7 → 9 と変化し、
10 を超えたところでループが終わります。

逆順に回す(Step -1)

行を上からではなく、下から上に向かって処理したいときもあります。
その場合は、Step にマイナスを指定します。

Sub SampleForReverse()

    Dim i As Long

    For i = 10 To 1 Step -1
        MsgBox i
    Next i

End Sub
VB

i は 10 → 9 → 8 → … → 1 と減っていき、
0 未満になったところで終了します。

逆順ループは、
「削除を伴う処理(下から消したほうが安全)」
などでよく使います。


For文の「開始値」「終了値」「Step」の関係を深掘りする

ループ回数はどう決まるか

例えば、

For i = 1 To 10
Next i
VB

このとき、i は 1~10 までの10回ループします。
回数は単純に「(終了値 − 開始値) ÷ Step + 1」です。

Step を変えるとこうなります。

For i = 1 To 10 Step 2   ' 1,3,5,7,9 → 5回
For i = 0 To 8 Step 2    ' 0,2,4,6,8 → 5回
For i = 10 To 1 Step -1  ' 10,9,8,...,1 → 10回
VB

重要なのは、

  • 「開始値からスタートして、Step ずつ増減させる」
  • 「終了値を超えた(または下回った)時点でループ終了」

というルールです。

終了値に“きっちり届かなくても”問題ない

For i = 1 To 10 Step 3   ' 1,4,7,10 → 4回
VB

この場合、i は 1 → 4 → 7 → 10 と変化します。
10 にちょうど届いているので分かりやすいですが、

For i = 1 To 10 Step 4   ' 1,5,9 → 3回(13には行かない)
VB

この場合は、1 → 5 → 9 までで、次は 13 になってしまうので、
「10を超えるから終了」という扱いになります。

「終了値を“超えたら”終わり」であって、
「必ず終了値に“ぴったり到達する”必要はない」
というのを覚えておくと、Step を使うときの不安が減ります。


For文でよくやる「合計」「カウント」のパターン

1~10の合計を求める

Sub SampleForSum()

    Dim i As Long
    Dim total As Long

    total = 0

    For i = 1 To 10
        total = total + i
    Next i

    MsgBox total   ' 55

End Sub
VB

流れを言葉にすると、

  • total を 0 で初期化
  • i を 1 から 10 まで動かしながら、total に足していく
  • ループが終わったとき、total に 1~10 の合計が入っている

というシンプルなものです。

「ループの中で、何かを少しずつ足していく」
このパターンは、実務でも頻出です。

条件を満たす行だけカウントする

Sub SampleForCount()

    Dim i As Long
    Dim cnt As Long

    cnt = 0

    For i = 1 To 100
        If Range("A" & i).Value = "完了" Then
            cnt = cnt + 1
        End If
    Next i

    MsgBox "完了件数: " & cnt

End Sub
VB

ここでは、

  • 1~100行目を順番に見ていく
  • A列が「完了」の行だけカウントを増やす
  • 最後に件数を表示する

という処理をしています。

「For で行を回す」+「If で条件判定」+「カウンタを増やす」
この3つの組み合わせは、Excel VBA の“基本中の基本”です。


For文でつまずきやすいポイント

カウンタ変数を Next で書き忘れる/間違える

For i = 1 To 10
    ' ...
Next   ' ← ここに i を書き忘れても動くが、癖としては書いたほうがいい
VB

VBAでは、Next のあとに変数名を書かなくても動きますが、
必ず Next i のように書く癖をつけたほうがいいです。

理由はシンプルで、「ネストしたときに読みやすくなるから」です。

For i = 1 To 10
    For j = 1 To 5
        ' ...
    Next j
Next i
VB

このように、どの Next がどの For に対応しているかが一目で分かるようになります。

開始値・終了値・Step の関係を間違える

For i = 10 To 1   ' Step を書かないと、デフォルトは +1 なので一度も回らない
Next i
VB

このように、「10から1へ向かいたいのに Step を書き忘れる」と、
ループが一度も実行されません。

逆に、

For i = 1 To 10 Step -1   ' これも一度も回らない
Next i
VB

のように、「増やす方向と終了条件の関係」が矛盾していると、
やはりループは実行されません。

「開始値から終了値へ、Step の符号の方向に向かって進んでいく」
というイメージを、頭の中で毎回確認してみてください。


For文を“怖くなくす”ための考え方

「手でやるならどうするか」を先にイメージする

例えば、

「A1~A10 に 1~10 の数字を入れたい」

という作業を、人間が手でやるとしたら、

  • まず A1 に 1 を入れる
  • 次に A2 に 2 を入れる
  • 次に A3 に 3 を入れる
  • A10 に 10 を入れる

というふうに、「同じことを、番号だけ変えながら繰り返す」はずです。

For文は、この「番号だけ変えながら同じことを繰り返す」を、
機械にやらせるための文です。

「自分が手でやるならどう繰り返すか?」を先にイメージしてから、
それを For文に落とし込むと、理解が一気に楽になります。

ループの中で「何が毎回変わっているか」を意識する

For文の中で、毎回変わるのは主にカウンタ変数 i です。
その i を、

  • セル番地の一部に使う
  • 配列のインデックスに使う
  • メッセージの内容に使う

など、「どこに差し込んでいるか」を意識して読むと、
ループの動きが頭の中で再生しやすくなります。


まとめ:For文は「規則的な繰り返し」をコードにするための道具

For文の本質は、

  • カウンタ変数を
  • 一定のルールで増減させながら
  • 同じ処理を何度も繰り返す

という仕組みです。

押さえておきたいポイントをコンパクトにまとめると、

  • For i = 開始値 To 終了値Next i が基本形
  • i は「今何回目か」「今何行目か」を表すカウンタ変数
  • Step で増え方を変えられる(2ずつ、逆順など)
  • 行ループ(Range(“A” & i))との組み合わせがExcel VBAの定番
  • 合計・カウント・条件付き処理など、For+If のパターンが超重要

タイトルとURLをコピーしました