では、先ほどの 「While…Wend → Do…Loop」書き換え練習問題10問 の模範解答を提示します。
それぞれ 先判定(Do While … Loop) と 後判定(Do … Loop While) の両方を示します。
1. 1から10までの数を表示
先判定
Dim i As Integer
i = 1
Do While i <= 10
Debug.Print i
i = i + 1
Loop
VB後判定
Dim i As Integer
i = 1
Do
Debug.Print i
i = i + 1
Loop While i <= 10
VB2. 2から100まで偶数を表示
先判定
Dim n As Integer
n = 2
Do While n <= 100
Debug.Print n
n = n + 2
Loop
VB後判定
Dim n As Integer
n = 2
Do
Debug.Print n
n = n + 2
Loop While n <= 100
VB3. 合計が100を超えるまで足し続ける
先判定
Dim sum As Integer, x As Integer
sum = 0: x = 1
Do While sum <= 100
sum = sum + x
x = x + 1
Loop
Debug.Print sum
VB後判定
Dim sum As Integer, x As Integer
sum = 0: x = 1
Do
sum = sum + x
x = x + 1
Loop While sum <= 100
Debug.Print sum
VB4. A列の空セルに出会うまで表示
先判定
Dim row As Long
row = 1
Do While Cells(row, 1).Value <> ""
Debug.Print Cells(row, 1).Value
row = row + 1
Loop
VB後判定
Dim row As Long
row = 1
Do
Debug.Print Cells(row, 1).Value
row = row + 1
Loop While Cells(row, 1).Value <> ""
VB5. 文字列が「END」になるまで入力を繰り返す
先判定
Dim s As String
s = InputBox("文字を入力")
Do While s <> "END"
Debug.Print s
s = InputBox("文字を入力")
Loop
VB後判定
Dim s As String
Do
s = InputBox("文字を入力")
Debug.Print s
Loop While s <> "END"
VB6. 2倍を繰り返し1000を超えるまで
先判定
Dim num As Long
num = 2
Do While num <= 1000
Debug.Print num
num = num * 2
Loop
VB後判定
Dim num As Long
num = 2
Do
Debug.Print num
num = num * 2
Loop While num <= 1000
VB7. 配列の要素を順番に表示
先判定
Dim arr(1 To 5) As String
Dim i As Integer
arr(1) = "A": arr(2) = "B": arr(3) = "C": arr(4) = "D": arr(5) = "E"
i = 1
Do While i <= 5
Debug.Print arr(i)
i = i + 1
Loop
VB後判定
Dim arr(1 To 5) As String
Dim i As Integer
arr(1) = "A": arr(2) = "B": arr(3) = "C": arr(4) = "D": arr(5) = "E"
i = 1
Do
Debug.Print arr(i)
i = i + 1
Loop While i <= 5
VB8. 乱数を生成し、10以上になるまで繰り返す
先判定
Dim r As Integer
r = Int(Rnd * 20)
Do While r < 10
Debug.Print r
r = Int(Rnd * 20)
Loop
VB後判定
Dim r As Integer
Do
r = Int(Rnd * 20)
Debug.Print r
Loop While r < 10
VB9. ファイルが存在する間、処理を繰り返す
先判定
Dim f As String
f = Dir("C:\Test\*.txt")
Do While f <> ""
Debug.Print f
f = Dir
Loop
VB後判定
Dim f As String
f = Dir("C:\Test\*.txt")
Do
Debug.Print f
f = Dir
Loop While f <> ""
VB10. ユーザーが「キャンセル」を押すまで繰り返す
先判定
Dim ans As String
ans = InputBox("続けますか?")
Do While ans <> ""
Debug.Print "続行"
ans = InputBox("続けますか?")
Loop
VB後判定
Dim ans As String
Do
ans = InputBox("続けますか?")
If ans <> "" Then Debug.Print "続行"
Loop While ans <> ""
VB✅ まとめ
- Do While … Loop → 先判定(条件を最初にチェック)
- Do … Loop While → 後判定(最低1回は必ず実行)
- 書き換え練習で「条件のチェック位置」と「処理の順序」を意識すると理解が深まる。
