1日目 Do Untilの条件について

今日VBAで以下のコードを書いた。

 

Sub test1()
    Dim i As Integer
    i = Cells(Rows.Count, 1).End(xlUp).Row
 Do While i > 0
        If i Mod 2 = 0 Then
            Rows(i).Delete
        End If
       i = i - 1
    Loop
    Rows(1).Insert
    Columns(1).Insert
End Sub

 

とあるサイトの練習問題をやろうと思って書いてみたけど、今まで知らなかった事に気付いた。

 

「Do Until i <= 0」と「Do While i > 0」は同じ意味らしい。

 

「Do While i > 0」だから、当然「Do Until i < 0」だろう。

 

そう思って書き換えて実行したら、結果が少し違っていた。

 

ちょっとネットで調べてみたら、良さそうなサイトを発見。

ExcelVBAではなくAccessVBAの事が書かれていたけど、Do~Loop文の事が分かり易く書かれていた。

 

このページの中に以下のコードを発見。
    Do While lngCount < 100         ' 1~99の間
    Do Until lngCount >= 100          ' 100になるまで

 

どうやら「Do While」の場合は~の間、「Do Until」の場合は指定の数字になるまでだから比較演算子を変えないといけない。
「Do While」で「<」を使っていたら、「Do Until」の時は「>」ではなく「>=」を使うという事。