Stackoverflowでいくつかの答えを読んで、while
wend
ループを見ました。私はdo while
loop
に慣れているので、この2つのループの違いは何だろうと思っていました。
私はいくつかのテスト(下記のコード)を行いましたが、どちらも同じ結果を与えているようです。
Sub test_loop_1()
Dim i As Integer
i = 1
Do While i < 10
Cells(i, 1) = i
i = i + 1
Loop
End Sub
Sub test_loop_2()
Dim i As Integer
i = 1
While i < 10
Cells(i, 1) = i
i = i + 1
Wend
End Sub
私が言及した答えはもはや見えませんが、この答えはまだ当てはまります。 While/WendはBasicからの二日酔いであり、Do/Loopは次の理由で優先される構文です。
Do While [condition] ... Loop
_(ゼロ回以上のループ実行)Do ... Loop While [condition]
_(1つ以上のループ実行)Do ...(some logic) (Exit Do) ... Loop
(1つ以上のループ実行、潜在的に無限)While Wend
は次のことができません。
Do
someCode
While (someCondition)
速度については、簡単なテストを行いました。
Sub whileLoopTest()
Dim i As Long, j As Long
Dim StartTime As Variant
i = 1
StartTime = Timer
While (i < 500000000)
j = i + 2
i = i + 1
Wend
Debug.Print "While execution time: " & Timer - StartTime
End Sub
Sub doWhileTest()
Dim i As Long, j As Long
Dim StartTime As Variant
i = 1
StartTime = Timer
Do While (i < 500000000)
j = i + 2
i = i + 1
Loop
Debug.Print "Do While execution time: " & Timer - StartTime
End Sub
結果:
While execution time: 6,429688
While execution time: 6,429688
While execution time: 6,441406
Do While execution time: 6,429688
Do While execution time: 6,449219
Do While execution time: 6,4375