Excel VBA | Do Loop文

VBA
スポンサーリンク

実務でよく使う「Do Loop」コードサンプル集(Excel VBA)

初心者が「業務で役立つ」イメージを持ちやすいように、実際の業務シーンを想定したサンプルをまとめました。


1. データ一覧を下まで処理する(行走査)

用途: 売上データや社員リストを、空セルまで処理する

Sub ListSales()
    Dim r As Long
    r = 2 ' 見出しの次の行から開始
    
    Do While Cells(r, "B").Value <> ""
        Debug.Print "社員名: " & Cells(r, "B").Value & _
                    " 売上: " & Cells(r, "C").Value
        r = r + 1
    Loop
End Sub
VB

👉 ポイント: 「セルが空になるまで」という終了条件が実務でよく使われます。


2. 合計が閾値に達するまで集計

用途: 売上や在庫を合計し、一定値に達したら終了

Sub SumUntilTarget()
    Dim r As Long, total As Long
    r = 2
    total = 0
    
    Do Until total >= 1000 Or Cells(r, "C").Value = ""
        total = total + Cells(r, "C").Value
        r = r + 1
    Loop
    
    MsgBox "合計: " & total & "(行数: " & r - 2 & ")"
End Sub
VB

👉 ポイント: 「Until」で止めたい条件(合計が1000以上)を明示。


3. 特定の値を探す(検索)

用途: 商品コードや社員番号を探す

Sub FindProduct()
    Dim r As Long
    Dim target As String
    target = "P1001"
    r = 2
    
    Do While Cells(r, "A").Value <> ""
        If Cells(r, "A").Value = target Then
            MsgBox "見つかった行: " & r
            Exit Sub
        End If
        r = r + 1
    Loop
    
    MsgBox "見つかりませんでした"
End Sub
VB

👉 ポイント: 見つかったら Exit Sub で即終了。効率的。


4. 入力チェック(必ず1回は処理)

用途: ユーザー入力を確認し、条件を満たすまで繰り返す

Sub InputCheck()
    Dim val As String
    
    Do
        val = InputBox("数値を入力してください(10以上)")
        If val = "" Then Exit Sub 'キャンセルで終了
    Loop Until IsNumeric(val) And val >= 10
    
    MsgBox "入力値: " & val
End Sub
VB

👉 ポイント: 「必ず1回は入力させたい」ので Do … Loop Until を使用。


5. 無限ループ対策(上限回数を設ける)

用途: 安全にループを止めるための保険

Sub SafeLoop()
    Dim i As Long
    i = 0
    
    Do While Cells(i + 2, "B").Value <> ""
        Debug.Print Cells(i + 2, "B").Value
        i = i + 1
        
        If i > 10000 Then
            MsgBox "処理が長すぎるため停止しました"
            Exit Do
        End If
    Loop
End Sub
VB

👉 ポイント: 実務では「無限ループ防止」が必須。


✅ まとめ

  • 行走査 → Do While(空セルまで)
  • 集計 → Do Until(閾値に達するまで)
  • 検索 → Do While + Exit Sub
  • 入力チェック → Do … Loop Until(必ず1回)
  • 安全対策 → 上限回数を設ける

💡 実際の業務では「終了条件」をどう設計するかが最重要です。

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