Excel VBA で プログラムの基礎を学ぶ!?

ページ番号: 1 2 3 4 5 6

・While…Wend ステートメント

繰り返しは色々あるのですが、このステートメントは正直言って、あまり使いませんw

広告

なので、使い方は、どこぞのサンプルをほぼほぼそのまんま載せますw(怒られる?)

Sub FuncWhileWend()
    Dim Counter
    
    Counter = 0
    
    While Counter < 5
        Counter = Counter + 1
        Debug.Print Counter
        
    Wend
    
    Debug.Print Counter
    
End Sub

Counterが5未満の間、+1の処理を繰り返すので、実行結果は・・ご想像にお任せしますw

必ず指定回数を繰り返すので、途中で抜けるには強制的に「Exit Sub」とかすることになるので、あまりよろしくないです

サンプルも悪いので、回数がわかっているなら、ForNextステートメントでいいですし、カウンターが必要ならなおさらForNextステートメントでしょ!?

って、なってしまいますが、もう少し複雑な条件の間に処理を行わせるとか、もしくは複雑な条件でカウントアップするような場合には、使えるんでしょうけどね・・

きっと次に紹介するステートメントで、より柔軟にできちゃうんですw

広告

・Do…Loop ステートメント

条件を満たすまで、処理を繰り返すことができますし、1つのステートメントですが、条件の設定が「Do」の後と「Loop」の後の2か所で設定できるので、構文が2つあるのです!

Sub FuncDoLoop()
    Dim idx As Integer
    idx = 0
    
    Debug.Print "①"
    Do While (idx < 3)
        idx = idx + 1
        Debug.Print "idx = " & idx
    
    Loop
    
    Debug.Print "②"
    Do
        idx = idx + 1
        Debug.Print "idx = " & idx
    
    Loop While (idx < 6)
    
    Debug.Print "③"
    Do
        idx = idx + 1
        Debug.Print "idx = " & idx
        
    Loop Until (idx >= 9)
    
    Debug.Print "④"
    Do Until (idx >= 12)
        idx = idx + 1
        Debug.Print "idx = " & idx
    Loop
    Debug.Print "⑤"
    Do While (idx < 12)
        idx = idx + 1
        Debug.Print "idx = " & idx
    
    Loop
    
    Debug.Print "⑥"
    Do
        idx = idx + 1
        Debug.Print "idx = " & idx
    
    Loop While (idx < 12)
    
    Debug.Print "⑦"
    Do
        If idx > 15 Then Exit Do
        
        idx = idx + 1
        Debug.Print "idx = " & idx
    
    Loop While (idx > 12)
    
End Sub

長くなってしまいましたw

構文的には、これと・・

Do [{ While | Until } condition ]
[ statements ]
[ Exit Do ]
[ statements ]
Loop

これ・・・

Do
[ statements ]
[ Exit Do ]
[ statements ]
Loop [{ While | Until } condition ]

ちなみに、上のサンプルの結果はこうなりますが、やりたいことが伝わりますかね?w


idx = 1
idx = 2
idx = 3

idx = 4
idx = 5
idx = 6

idx = 7
idx = 8
idx = 9

idx = 10
idx = 11
idx = 12


idx = 13

idx = 14
idx = 15
idx = 16

「Do」か「Loop」のどちらに条件を書くかによって、当然ですが処理が異なり、①~④は単純に構文のパターンを網羅しただけです

  • ①:idxが3未満の間、繰り返す
  • ②:idxが6未満の間、繰り返す
  • ③:idxが9以上になるまで、繰り返す
  • ④:idxが12以上になるまで、繰り返す

⑤~⑥は同じ条件式でも評価されるタイミングが異なるため、ステートメントが実行されるかどうかが異なることを示しています

  • ⑤:idxが12なので、ステートメント実行前に評価され、実行されない
  • ⑥:idxが12ですが、ステートメント実行後に評価され、実行される

⑦は「Exit Do」で任意にステートメントを終了する(抜ける)ことができることを示しています

ページ番号: 1 2 3 4 5 6
広告

やもす ʕ•͡-•ʔ

のんびり!のほほん!がモットーです!w 蕎麦食いたい ライブ行きたい 暑いの嫌い

シェアする