【VBA】For文を使う【Stepの指定、IFとの組み合わせ、Forの中にFor、ループを抜ける】

Excel VBAで、「For文」を使う方法について、ご紹介します。For文は、同じ処理をループすることができるものです。For文では、「Step」や、「Ifとの組み合わせ」、「Forの中にForを使う」、「Forを抜ける」といった操作をよく使いますので、マスターしていきましょう。
はじめに
この記事では、「For文」を使う方法について、ご紹介します。
For文を使うと、同じ処理をループすることができるものです。
For文を使う際に、次の方法を覚えておくとスムーズにVBAコードを記載できます。
- 「Step」を使って増分を設定
- 「If文」との組み合わせ
- 「Forの中にFor」を使う
- Forのループを抜ける
For文の使い方を覚えて、VBAを使っていきましょう。
では、「For文」を使う方法について、解説していきます。
この記事を読むメリット
- 「For文」の使い方がわかります
目次
For文を使う
For文を使ってループしてみます。
ループしてみる
「For」でループするVBAコードです。
Sub TEST1() '1~9までループ For i = 1 To 9 Cells(i, "A") = i '値を入力 Next End Sub
「For」を使ってループしてみます。
「For」でループする

「For」を使ってループできました。
変数の増分をStepで設定
変数の増分を「Step」で設定することができます。
2つずつループ
「Step」を使って2つずつループするVBAコードです。
Sub TEST2() '2つ刻みで1~9までループ For i = 1 To 9 Step 2 Cells(i, "A") = i '値を入力 Next End Sub
「Step」を使って2つずつ増やしてループしてみます。
「Step」で2つずつループ

「Step」を使って2つずつ増やしてループできました。
降順にループ
降順にループするVBAコードです。
Stepで「-1」を使うところがポイントです。
Sub TEST3() '9~1までループ For i = 9 To 1 Step -1 Debug.Print i '値を入力 Next End Sub
「Step」を使って降順にループしてみます。
「Step」で降順にループ

「Step」を使って降順にループできました。
ForとIfの組み合わせ
ForとIfを組み合わせて使ってみます。
ループして条件一致した場合に実行
ループして条件に一致した場合に実行することができます。
「3」の場合だけセルに入力
「ForとIf」を組み合わせて、「3」の場合だけセルに入力します。
Sub TEST4() '1~9までループ For i = 1 To 9 '「3」の場合 If i = 3 Then Cells(i, "A") = i '値を入力 End If Next End Sub
では、実行してみます。

「ForとIf」を組み合わせて、「3」の場合だけセルに入力しました。
「D」を探して「1」を入力
「ForとIf」を組み合わせて、「D」を探すVBAコードです。
Sub TEST5() '1~9をループ For i = 1 To 9 '「D」の場合 If Cells(i, "A") = "D" Then Cells(i, "B") = 1 '「1」を入力 End If Next End Sub
「ForとIf」を組み合わせて、「D」を探します。

では、実行してみます。

「ForとIf」を組み合わせて、「D」を探して、「1」を入力できました。
Forの中にForを使う
Forの中にForを使うこともできます。
行と列をループする
「Forの中にFor」を入力して、行と列をループしてみます。
Sub TEST6() '1~4をループ For i = 1 To 4 '1~3をループ For j = 1 To 3 '値を出力 Debug.Print Cells(i, j) Next Next End Sub
複数行で複数列の表を用意します。
4行3列の表

行と列を「ForとFor」を使って、こんな感じでループします。
ループするイメージ

では、実行してみます。
「ForとFor」で行と列をループできた

「ForとFor」を使って行と列をループできました。
Forのループを抜ける
Forのループを途中で抜ける方法です。
次の2つがあります。
- Exit Forを使う
- Gotoを使う
では、それぞれ実行してみます。
Exit Forを使う
Exit Forを使って、Forのループを途中で抜けてみます。
Sub TEST7() '1~9をループ For i = 1 To 9 '値を出力 Debug.Print Cells(i, "A") '「E」の場合はループを抜ける If Cells(i, "A") = "E" Then Exit For 'ループを抜ける End If Next End Sub
表を用意します。
表を用意

表をループして「E」になったら「Exit For」でループを抜けます。
「E」になったら「Exit For」で抜ける

実行してみます。
ループを抜けた

「For」でループして「Exit For」でループを抜けれました。
Forの中にForがある場合
Forの中にForがある場合でやってみます。
「Forの中にFor」がある場合にループを抜けたい
複数行と複数列の表を用意します。

複数行と複数列で、「E」がきたら「ForとFor」のループを抜けたいです。

方法は、「Exit For」を2回使う方法と、「Goto」を使う方法があります。
「Goto」を使う方法が簡単です。
「Exit For」を2回使ってループを抜ける
「Exit For」を2回使ってループを抜けてみます。
Sub TEST8() Dim Flag Flag = 0 '1~4をループ For i = 1 To 4 '1~3をループ For j = 1 To 3 '値を出力 Debug.Print Cells(i, j) '「E」の場合 If Cells(i, j) = "E" Then Flag = 1 'フラグを立てる Exit For 'ループを抜ける End If Next 'フラグがオンの場合 If Flag = 1 Then Exit For 'ループを抜ける End If Next End Sub
「Exit For」を使う方法では、「フラグ」を使って2つの「For」を抜ける必要があります。

では、実行してみます。

フラグを使って「Exit For」を2回実行して、「ForとFor」のループを抜けれました。
「Goto」を使ってループを抜ける
「Goto」を使ってループを抜けてみます。
こっちの方が簡単です。
Sub TEST9() '1~4をループ For i = 1 To 4 '1~3をループ For j = 1 To 3 '値を出力 Debug.Print Cells(i, j) '「E」の場合 If Cells(i, j) = "E" Then GoTo A '「A」に移動する End If Next Next A: End Sub
「Goto」を使えば、任意の場所に移動できますので、簡単にループを抜けることができます。

では、実行してみます。

「Goto」を使って「ForとFor」のループを抜けることができました。
おわりに
この記事では、「For文」を使う方法について、解説しました。
For文を使う際に、次の方法を覚えておくとスムーズにVBAコードを記載できます。
- 「Step」を使って増分を設定
- 「If文」との組み合わせ
- 「Forの中にFor」を使う
- Forのループを抜ける
For文の使い方を覚えて、VBAを使っていきましょう。
参考になればと思います。最後までご覧くださいまして、ありがとうございました。
関連する記事から探す