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