VBA For Next

わずかな知識で VBA!

VBA For Next


 

繰り返しのステートメント   For Next



  For Nextステートメント

  For Nextステートメントは、あらかじめ処理回数を指定する基本的なループ方法です。

   Do Loopステートメントで書かれたサイコロゲームのサイコロの目を表示する部分を
 
     Dim i As IntegerDim i As Integer
      i = 0
      Do Until i = 10
         sainome = Int(6 * Rnd + 1)
         Range("C5").Value = sainome
         sainome = Int(6 * Rnd + 1)
         Range("C7").Value = sainome
         i = i + 1
      Loop


   For Nextステートメントで書きなおすと

      For i = 1 To 10
         sainome = Int(6 * Rnd + 1)
         Range("C5").Value = sainome
         sainome = Int(6 * Rnd + 1)
         Range("C7").Value = sainome
      Next i


   となります。

   For Nextステートメントは、決められた数だけ繰り返しますが。
   Do Loopステートメントは、ある条件が整うまで、繰り返します。

  
   上記の例を言い換えると、For Nextステートメントは10回繰り返しますが、
   Do Loopステートメントは、「i」が10になるまで繰り返します。

   Do Loopステートメントでは、「i」に1を加えていかなければなりませんが、
   For Nextステートメントにはその必要はありません。
 
   また、Do Loopステートメントよりは、処理が早いと言われていますが、
   サイコロゲーム程度では意識しなくてもいいでしょう。
      

わずかな知識で
VBA!






   Stepキーワードにより 増加値を変える

     Stepキーワードにより 増加値を2つとした例です。
 
        For i = 1 To 100 Step 2           
           sainome = Int(6 * Rnd + 1)
           Range("C5").Value = sainome
           sainome = Int(6 * Rnd + 1)
           Range("C7").Value = sainome
        Next i




     この条件式に、整数型の変数を使用することができます。

        Dim i As Integer
        Dim sheetsu As Integer

        sheetsu = Worksheets.Count
        For i = 1 To sheetsu
           Worksheets(i).Name = "計算書" & i
        Next i



   For Nextステートメントの中での条件分岐

        Dim i As Integer
        Dim sheetsu As Integer

        sheetsu = Worksheets.Count
        For i = 1 To sheetsu
           Worksheets(i).Name = "計算書" & i
           If i = 5 then Exit For
               i が5ならFor Next から抜けて次の処理に進む
        Next i
        MsgBox i
              i がシート数になるか、5になればこれ以降の処理が実行されます。
 
 

  For Each Nextステートメント

    前の例では、シート数を取得してから処理を行っていましたが、コレクションを対象にループする場合は、
    コレクションに含まれるオブジェクトの数を知らなくても実行できる
    For Each   Nextステートメントという便利なものがあります。

    サイコロゲームでシート保護をかけるプロシージャがそれです。

        Dim Wsheet As Worksheet                 オブジェクト変数の宣言
        For Each Wsheet In Worksheets             For Each (オブジェクト変数) In (コレクション)
            Wsheet.Unprotect Password:="sheet85"
        Next Wsheet
                          Nextステートメントで次のオブジェクトに
 
   Next Wsheetの Wsheetは、省略可ですが、入れ子にした時に分かりずらくなります。
  
        


  わずかな知識で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