VBA入門② No.8 繰り返し処理(条件)「Do〜Loop」

  • Do〜Loopを利用した繰り返し処理には2種類の方法があります
  • 1つは「While」を使った条件がtrueの間繰り返す処理
  • 2つめは「Until」を使った条件がtrueになるまで繰り返す処理

文法(While)

Do While 条件式
    処理内容
Loop

文法(While)

Do Until 条件式
    条件式を満たすまで繰り返す処理
Loop

サンプル(Whileを使った場合)

  • Whileを使った場合、条件式がtrueの間ずっと繰り返し処理を行うので、カウンタ用の変数(i)を処理中に+1してやり、終了させてやります
  • 条件式は「変数(i)が10より小さい間繰り返す」となり、変数iの初期値は「1」最大値は「11」に設定されているので、10回繰り返された(10回 +1された)時点で終了です
Option Explicit

'Whileを使ったテスト
Sub test1()
'カウンタ用の変数を宣言
Dim i As Integer
    i = 1
    Do While i < 11
    'セルのA1〜A10に1〜10を入力する
        Worksheets("Sheet1").Cells(i, 1).Value = i
        i = i + 1
    Loop
End Sub

サンプル(Untilを使った場合)

  • Untilを使った場合、も条件式がtrueになるまで繰り返し処理を行うので、カウンタ用の変数(i)を用意し、処理中に+1してやり、条件を達成したら終了させてやります
  • UntilのはWhileとは違い、条件式がtrueになってしまうと処理がストップしてしまうので、条件式は「変数(i)が11より大きく(もしくは同じ)になるまで繰り返す」となります
Option Explicit

'Untilを使ったテスト
Sub test2()
'カウンタ用の変数を宣言
Dim i As Integer
    i = 1
    Do Until i >= 11
        'セルのB1〜B10に1〜10を入力する
        Worksheets("Sheet1").Cells(i, 2).Value = i
        i = i + 1
    Loop
End Sub

最低でも1回はかならず処理させたい

  • 上記の書き方では、変数の値によっては1回も処理がされない場合も考えられます
  • 以下のように「処理を行ってから、評価する」ように書いておけば、最低でも1回は必ず処理を行うようになります

文法(While)

Do
    処理内容
Loop While 条件式

文法(Until)

Do
    処理内容
Loop Until 条件式