HOME >VBA 基礎 > このページ
 繰り返し処理(基礎編)

■Contents

01 While文
02 Do文
  ・Do・・・Loop
  ・Do Until・・・Loop
  ・Do While・・・Loop
  ・Do・・・Loop While
  ・Do・・・Loop Until
03 For文
  ・For・・・Next
  ・For Each・・・Next

01.While文

 条件式が真(True)の間処理を繰り返し実行します。While・・・Wendループの中にWhile・・・Wendループを組み込む構造(ネスト構造)にすることができます。
 While 条件式
    繰り返し実行する処理
Wend



02.Do文

 Do・・・Loopステートメントは前判断と後判断を行うことができ,ループ条件としてUntil(条件式を満たすまで)またはWhile(条件式を満たしている間)を組合わせることができます。この組合わせで4種類のフロー制御ができます。ループを強制的に抜けるにはExit Doステートメントを使用します。
Do
  繰り返し実行する処理
  [Exit Do]
Loop


 前判断とは,繰り返し実行する処理を行う前に条件を判断を行うことです。条件式によっては,一度もループに入らず処理を終了することがあります。
Do Until 条件式
  繰り返し実行する処理
  [Exit Do]
Loop


Do While 条件式
  繰り返し実行する処理
  [Exit Do]
Loop


 後判断では,繰り返し実行する処理を必ず1回は実行します。
Do
  繰り返し実行する処理
Loop While 条件式


Do
  繰り返し実行する処理
Loop Until 条件式
【サンプルコード】 いずれも1から10までの和を計算します。
 Sub sum1()
    Dim Sum As Integer
    Dim i As Integer
    Sum = 0: i = 1

    While i <= 10
      Sum = Sum + i: i = i + 1
    Wend
  End Sub
  Sub sum2()
    Dim Sum As Integer
    Dim i As Integer
    Sum = 0: i = 1

    Do Until i > 10
      Sum = Sum + i: i = i + 1
    Loop
  End Sub
 Sub sum3()
    Dim Sum As Integer
    Dim i As Integer
    Sum = 0: i = 1

    Do
      Sum = Sum + i: i = i + 1
    Loop Until i > 10
 End Sub
  Sub sum4()
    Dim Sum As Integer
    Dim i As Integer

    Sum = 0: i = 1

    Do While i <= 10
      Sum = Sum + i: i = i + 1
    Loop
 End Sub
  Sub sum5()
   Dim Sum As Integer
   Dim i As Integer

   Sum = 0: i = 1

   Do
    Sum = Sum + i: i = i + 1
    Loop While i <= 10
 End Sub



03.For文

 For・・・Nextステートメントは指定された回数だけ繰り返し処理を行います。Stepにはカウンターに加算される値を指定します。省略した場合は増分は1になります。強制的にループから抜け出すにはExit Forステートメントを使用します。For・・・Nextループの中にFor・・・Nextループを組み込む構造(ネスト構造)にすることができます。
For カウンタ=初期値 To 最終値 [[Step 増分]
 繰り返し実行する処理
Next [カウンタ]
初期値>最終値 の場合は増分は負の数を指定します。
For カウンタ1=初期値1 To 最終値1 [[Step 増分1]
 For カウンタ2=初期値2 To 最終値2 [[Step 増分2
  繰り返し実行する処理
 Next [カウンタ2]
Next [カウンタ1]


 For Each・・・Nextステートメントは配列,レコード,コントロールなどを対象とした特殊なループ構造です。配列やコレクションの各要素に対して処理を繰り返して実行します。For... Each ステートメントをユーザー定義型の配列に使用することはできません。
For Each 要素を示す変数 In 配列またはコレクションの名前
  繰り返し実行する処理
  [Exit For]
Next [要素を示す変数]
【サンプルコード】 (50以下の奇数の和を求める)
  Sub sum()
    Dim i As Integer
    Dim sum As Integer
    sum = 0

    For i = 1 To 50 Step 2
      sum = sum + i
    Next i
    MsgBox sum
  End Sub  
【サンプルコード】 カレントデータベースに含まれるすべてのテーブル名をイミディエイトウインドウに表示します。
 Sub テーブルリスト表示()
    Dim myobuje As AccessObject
    For Each myobuje In CurrentData.AllTables
      Debug.Print myobuje.Name & " ";
    Next
  End Sub

ホームページに|前のページに|次のページに

CopyRight(C) 2004 cbcnet. All Rights Reserved