Sub TEST1()
i = 1
'10以下の場合はループ
Do While i <= 10
Cells(i, "A") = i 'セルに入力
i = i + 1 'カウントアップ
Loop
End Sub
「10以下」の場合はループします。
「10以下」の場合はループ
「10以下」の場合はループしました。
Whileを下につける
Whileを下につけることもできます。
ループの判定は、下で判定されることになります。
Sub TEST2()
i = 1
Do
Cells(i, "A") = i 'セルに入力
i = i + 1 'カウントアップ'10以下の場合はループ
Loop While i <= 10
End Sub
「10以下」の場合はループします。
「10以下」の場合はループ
「10以下」の場合はループしました。
複数条件を使う
「Or」や「And」を使って、「複数条件」でループの判定をすることができます。
「Or」条件でループする
「Or」条件でループする
Sub TEST3()
i = 1
'A列もしくはB列が空白ではない場合にループ
Do While Cells(i, "A") <> "" Or Cells(i, "B") <> ""
Cells(i, "C") = i 'セルに入力
i = i + 1 'カウントアップ
Loop
End Sub
A列とB列に値を入力しておきます。
A列もしくはB列が「空白ではなかったら」ループします。
という感じで、「Or」条件を使うことができます。
「And」条件でループする
「And」条件でループしてみます。
Sub TEST4()
i = 1
'A列とB列が空白ではない場合にループ
Do While Cells(i, "A") <> "" And Cells(i, "B") <> ""
Cells(i, "C") = i 'セルに入力
i = i + 1 'カウントアップ
Loop
End Sub
A列とB列に値を入力しておきます。
A列とB列の両方が「空白ではなかったら」ループします。
という感じで、「And」条件を使うことができます。
2重でループする
Do While Loopを2重でループしてみます。
Sub TEST5()
k = 0
i = 1
'4以下の場合はループ
Do While i <= 4
j = 1
'3以下の場合はループ
Do While j <= 3
k = k + 1
Cells(i, j) = k 'セルに入力
j = j + 1
Loop
i = i + 1
Loop
End Sub
Sub TEST6()
i = 1
Do
'10より大きくなったらループを抜ける
If i > 10 Then Exit Do
Cells(i, "A") = i 'セルに入力
i = i + 1 'カウントアップ
Loop
End Sub
「10より大きくなったら」ループを抜けます。
「10より大きくなったら」ループを抜ける
という感じで、「Exit Do」を使って、ループを抜けることができます。
複数条件を使う
「And」と「Or」を使って、「複数条件」でループを抜けてみます。
ループを抜ける際に、複数条件を使うという感じです。
「And」条件でループを抜ける
「And」条件でループを抜けてみます。
Sub TEST7()
i = 1
Do
'A列とB列の両方が空白の場合に、ループを抜ける
If Cells(i, "A") = "" And Cells(i, "B") = "" Then Exit Do
Cells(i, "C") = i 'セルに入力
i = i + 1 'カウントアップ
Loop
End Sub
A列とB列に値を入力しておきます。
A列とB列が両方との「空白」の場合にループを抜けます。
という感じで、「And」条件でループを抜けることができます。
「Or」条件でループを抜ける
「Or」条件でループを抜けてみます。
Sub TEST8()
i = 1
Do
'A列もしくはB列が空白の場合に、ループを抜ける
If Cells(i, "A") = "" Or Cells(i, "B") = "" Then Exit Do
Cells(i, "C") = i 'セルに入力
i = i + 1 'カウントアップ
Loop
End Sub
A列とB列に値を入力しておきます。
A列もしくはB列が「空白」の場合に、ループを抜けます。
という感じで、「Or」条件でループを抜けることができます。
2重でループする
「Do Loop」を2重でループしてみます。
Sub TEST9()
k = 0
i = 1
Do
'4より大きくなったらループを抜ける
If i > 4 Then Exit Do
j = 1
Do
'3より大きくなったらループを抜ける
If j > 3 Then Exit Do
k = k + 1
Cells(i, j) = k 'セルに入力
j = j + 1
Loop
i = i + 1
Loop
End Sub
実行してみます。
2重でループ
「Do Loop」を2重でループできました。
空白までループしてみる
「Do While Loop」、「Do Loop While」、「Do Loop」を使って、空白までループしてみます。
Do While Loopの場合
「Do While Loop」の場合で空白までループしてみます。
Sub TEST10()
i = 1
'A列が空白ではない場合にループ
Do While Cells(i, "A") <> ""
'セルの値を出力
Debug.Print Cells(i, "A")
i = i + 1 'カウントアップ
Loop
End Sub
「空白ではない」場合にループします。
「空白ではない」場合にループ
実行してみます。
空白まループして値を出力
空白までループして値を出力できました。
Do Loop Whileの場合
「Do Loop While」の場合で、空白までループしてみます。
Sub TEST11()
i = 1
Do
'値を出力
Debug.Print Cells(i, "A")
i = i + 1 'カウントアップ'A列が空白ではない場合にループ
Loop While Cells(i, "A") <> ""
End Sub
「空白ではない」場合にループします。
「空白ではない」場合にループ
実行してみます。
空白までループして値を出力
空白までループして値を出力できました。
Do Loopの場合
「Do Loop」の場合で、空白までループしてみます。
Sub TEST12()
i = 1
Do
'A列が空白の場合にループを抜ける
If Cells(i, "A") = "" Then Exit Do
Debug.Print Cells(i, "A") '値を出力
i = i + 1 'カウントアップ
Loop
End Sub
「空白」になったら、ループを抜けます。
「空白」になったら、ループを抜ける
実行してみます。
空白までループして値を出力
空白までループして値を出力できました。
使い分け
「Do While Loop」と「Do Loop While」、「Do Loop」の使い分けです。
ループを判定する箇所が違います。
「最初」にループの判定:「Do While Loop」
「最後」にループの判定:「Do Loop While」
「途中」でループの判定:「Do Loop」
という感じです。
最初にループの判定(Do While Loop)
「Do While Loop」の場合は、「最初」にループの判定をします。
「最初」にループの判定
最初に判定をするので、一回もループしない場合もあります。
最後にループの判定(Do Loop While)
「Do Loop While」の場合は、「最後」にループの判定をします。
「最後」にループの判定
最後に判定するので、必ず「1回」は、コードが実行されることになります。
途中でループの判定(Do Loop)
「Do Loop」の場合は、「途中」でループを判定をします。
「途中」でループの判定
任意のコードまで必ず「1回」は実行したい場合に使えます。
おわりに
この記事では、「Do While Loop」、「Do Loop While」、「Do Loop」の使い方について、ご紹介しました。
ループする回数がわからない場合に、「Do While Loop」、「Do Loop While」、「Do Loop」が使えます。
空白までループしたい場合とかですね。
「Do While Loop」、「Do Loop While」、「Do Loop」は、ループの判定をどこでやるかが違います。