在庫チェック編
問題1:在庫切れで処理を止める
模範解答
Sub StockCheck1()
Dim rowNo As Long
rowNo = 1
Do While Cells(rowNo, 1).Value <> "" ' 商品名が空でない間繰り返す
If Cells(rowNo, 2).Value = 0 Then ' 在庫数が0なら
MsgBox "在庫切れ商品: " & Cells(rowNo, 1).Value & "(行 " & rowNo & ")"
Exit Do ' ループ終了
End If
rowNo = rowNo + 1
Loop
End Sub
VB解説
- 在庫数が0の商品を見つけたら即終了。
Exit Doにより「最初の在庫切れ商品」だけを報告できる。
問題2:在庫合計が閾値を超えたら終了
模範解答
Sub StockCheck2()
Dim rowNo As Long, total As Long
rowNo = 1
total = 0
Do While Cells(rowNo, 2).Value <> ""
total = total + Cells(rowNo, 2).Value
If total > 500 Then
MsgBox "在庫合計が500を超えました! 行 " & rowNo & " で停止。合計: " & total
Exit Do
End If
rowNo = rowNo + 1
Loop
End Sub
VB解説
- 合計を更新した直後にチェック。
- 閾値を超えた瞬間に処理を止めるので「超えた直後の状態」がわかる。
問題3:特定商品を見つけたら終了
模範解答
Sub StockCheck3()
Dim i As Long
For i = 1 To 100
If Cells(i, 1).Value = "ノートPC" Then
MsgBox "ノートPCを発見! 行番号: " & i
Exit For
End If
Next i
End Sub
VB解説
- 範囲が決まっているので
For〜Nextが適切。 - 最初に見つけた時点で
Exit For→ 無駄な探索をしない。
名簿整形編
問題4:最初の空欄を見つけたら終了
模範解答
Sub NameList1()
Dim i As Long
For i = 1 To 50
If Cells(i, 3).Value = "" Then
MsgBox "最初の空欄は " & i & " 行目です"
Exit For
End If
Next i
End Sub
VB解説
- 名簿の「最初の空欄」を探す典型例。
Exit Forにより「最初の一致」だけを報告できる。
問題5:重複を見つけたら終了
模範解答
Sub NameList2()
Dim i As Long, j As Long
Dim found As Boolean
found = False
For i = 1 To 50
For j = i + 1 To 50
If Cells(i, 3).Value <> "" And Cells(i, 3).Value = Cells(j, 3).Value Then
MsgBox "重複発見! 名前: " & Cells(i, 3).Value & " 行: " & i & " と " & j
found = True
Exit For ' 内側ループ終了
End If
Next j
If found Then Exit For ' 外側ループも終了
Next i
End Sub
VB解説
- 二重ループで比較。
- 内側で見つけたら
Exit For→ 外側もフラグで終了。 - 「最初の重複」だけを報告できる。
問題6:条件付き終了(部署ごと)
模範解答
Sub NameList3()
Dim r As Long, c As Long
Dim found As Boolean
found = False
For r = 1 To 50
If Cells(r, 1).Value = "営業" Then ' 部署が営業なら
If Cells(r, 2).Value = "田中" Then
MsgBox "営業部で田中さんを発見! 行: " & r
found = True
Exit For
End If
End If
Next r
End Sub
VB解説
- 部署条件を満たした上で氏名をチェック。
- 見つけたら即終了 → 無駄な探索をしない。
総まとめ
- Exit Do → データが「終わりまで続く」処理に便利(在庫合計など)。
- Exit For → 範囲が決まっている処理に便利(名簿検索など)。
- ネスト+フラグ → 二重ループを一気に抜けたいときに必須。
👉 この模範解答を実際に動かすと「Exit文で処理を途中で止める」感覚がつかめます。
