実務でよく使う「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回)
- 安全対策 → 上限回数を設ける
💡 実際の業務では「終了条件」をどう設計するかが最重要です。
