大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、ループする回数がわからない場合に、「Do While Loop」、「Do Loop While」、「Do Loop」が使えます。空白までループしたい場合とかですね。それぞれのループの抜け方や、複数条件を使う方法を、解説していきます。

はじめに

この記事では、「Do While Loop」、「Do Loop While」、「Do Loop」の使い方について、ご紹介します。

ループする回数がわからない場合に、「Do While Loop」、「Do Loop While」、「Do Loop」が使えます。

空白までループしたい場合とかですね。

「Do While Loop」、「Do Loop While」、「Do Loop」は、ループの判定をどこでやるかが違います。

  • 「最初」にループの判定:「Do While Loop」
  • 「最後」にループの判定:「Do Loop While」
  • 「途中」でループの判定:「Do Loop」

という感じです。

ループ判定をどこでやりたいかに応じて、使い分けていきましょう。

では、「Do While Loop」、「Do Loop While」、「Do Loop」の使い方について、解説していきます。

この記事で紹介すること

  • 「Do While Loop」、「Do Loop While」、「Do Loop」の使い方

目次

Do While Loopを使う

「Do While Loop」を使って、ループしてみます。

条件成立したらループ

「While」に記述した「条件が成立」したらループします。

Sub TEST1()
    
    i = 1
    '10以下の場合はループ
    Do While i <= 10
        Cells(i, "A") = i 'セルに入力
        i = i + 1 'カウントアップ
    Loop
    
End Sub

「10以下」の場合はループします。

「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以下」の場合はループします

「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列に値を入力しておきます

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列に値を入力しておきます

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

実行してみます。

2重でループ

Do While Loopを2重でループしてみます

「Do While Loop」を2重でループできました。

Do Loopを使う

「Do Loop」を使って、ループしてみます。

「Do Loop」だけだと無限ループになってしまうので、ループを抜けるときは、「Exit Do」を使います。

Exit Doでループを抜ける

「Exit Do」でループを抜けてみます。

Sub TEST6()
    
    i = 1
    Do
        '10より大きくなったらループを抜ける
        If i > 10 Then Exit Do
        Cells(i, "A") = i 'セルに入力
        i = i + 1 'カウントアップ
    Loop
    
End Sub

「10より大きくなったら」ループを抜けます。

「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列に値を入力しておきます

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列に値を入力しておきます

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 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 While Loop」の場合は、「最初」にループの判定をします

最初に判定をするので、一回もループしない場合もあります。

最後にループの判定(Do Loop While)

「Do Loop While」の場合は、「最後」にループの判定をします。

「最後」にループの判定

「Do Loop While」の場合は、「最後」にループの判定をします

最後に判定するので、必ず「1回」は、コードが実行されることになります。

途中でループの判定(Do Loop)

「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」は、ループの判定をどこでやるかが違います。

  • 「最初」にループの判定:「Do While Loop」
  • 「最後」にループの判定:「Do Loop While」
  • 「途中」でループの判定:「Do Loop」

という感じです。

ループ判定をどこでやりたいかに応じて、使い分けていきましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す