vba Do Loop★Do Until

わずかな知識で VBA!

vba Do Loop
Do Until

 

繰り返しのステートメント   Do Loop



  同一処理を繰り返すことを「ループ」といいます。

  ループには、指定回数だけ繰り返すものと、
  ある特定の条件が整うまで繰り返すものがあります。

  Do Loopステートメントは、ある特定の条件が整うまで、
  または、ある特定の条件が整っている間は処理を繰り返すというものです。

  つまり、2種類ありますが、
  ループの前で条件判断する書き方と、ループの後で条件判断する書き方があるので、
  4種類ということになるのでしょうか。

  私が多用するのは、「Do Until Loop」です。
  こちらは、ループする前に条件判断を行い、ある特定の条件が整うまで繰り返します。
      

わずかな知識で
VBA!




  「Do Until  Loop」 

  ループ作業に入る前に、既に、条件が整っている場合もあるので、こちらが一般的だと思います。

 
    Do Until 条件式

      作業1
      作業2
 
    Loop


   次の例は、参照セルが、コードと同じになるか、カウンター値が200になるまで繰り返します。
   カウンター値はコードと同じものがない場合に備えた処理です。

      Do Until setcell.Value = kohdo Or cntA = 200        条件式
         Set setcell = setcell.offset(1, 0)             参照セルを一つ下のセルへセット
         cntA = cntA + 1                        カウンター値を1つ増やす 
      Loop                                  ループ

   これを、ループの後で条件判断するものに変更すると

      Do
        Set setcell = setcell.offset(1, 0) 
          参照セルを一つ下のセルへセット
        cntA = cntA + 1                     カウンター値を1つ増やす 
      Loop Until setcell.Value = kohdo Or cntA = 200  条件式

   となりますが、無条件に1回ループされてしまいます。
   ということで、ループの前で条件判断するものを覚えておけば充分です。


  「Do While Loop
   
    ある特定の条件が整っている間は処理を繰り返す
Do While Loop
      Do While 条件式

       作業1
       作業2
 
      Loop


    Do Until Loopと同じ構文になりますが、こちらはある条件が整っている間だけループします。
    この条件にはなじみませんが、上のDo Untilの例を書き換えると下記の様になります。

       Do While setcell.Value <> kohdo Or cntA <> 200       条件式
          Set setcell = setcell.offset(1, 0)              参照セルを一つ下のセルへセット
          cntA = cntA + 1                         カウンター値を1つ増やす 
        Loop


    へそ曲がり的な条件設定になってしまいましたが、Do Wile ・・Loopステートメントは、
   何かフラグ(判定の目印)をたてて、そのフラグが変わるまでの間は繰り返す時などに使用します。
  

  どうですか、このうちの一つを覚えておけば大丈夫です。

        


  わずかな知識でVBA!       TOP

  マクロで何ができる?   ユーザーインターフェース    マクロの記録   マクロの登録
 
  イベントについて      マクロの編集とデバッグ    ゲームで覚えるVBAプログラミング
 
  オブジェクトの操作     セルの操作            MsgBox関数・InputBox関数
 
  変数の型           ヘルプの活用          イミディエイトウィンドウ  
 
  Withステートメント      Setステートメント
 
  条件分岐のステートメント   If Then Else,Select Case
 
  繰り返しのステートメント   Do Loop
 
  繰り返しのステートメント   For Next
  
  ダイアログボックスを作ってみよう1              ダイアログボックスを作ってみよう2 【実践編】
  
  ActiveXコントロール   各コントロールのプロパティ       文字列の操作        Endプロパティ

  リンク・検索   相互リンク    マイプロフィール
      YouTubeの部屋 

Copyright (C) わずかな知識でVBA! All Rights Reserved