Excel VBA | 「While…Wend」を「Do…Loop」に書き換える練習問題

VBA
スポンサーリンク

では、先ほどの 「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
VB

2. 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
VB

3. 合計が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
VB

4. 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 <> ""
VB

5. 文字列が「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"
VB

6. 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
VB

7. 配列の要素を順番に表示

先判定

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
VB

8. 乱数を生成し、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
VB

9. ファイルが存在する間、処理を繰り返す

先判定

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 <> ""
VB

10. ユーザーが「キャンセル」を押すまで繰り返す

先判定

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回は必ず実行)
  • 書き換え練習で「条件のチェック位置」と「処理の順序」を意識すると理解が深まる。
VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました