Excel VBA で各種ループ処理を行う

2022年1月8日

プログラミングする大きなメリットは、同じ処理を繰り返す際に短いコードで記述できることです。例えば以下の例では繰り返し処理で使うForNextステートメントを利用すると4行で記述できますが、ForNextステートメントを利用しない場合100行のコードを記述することになります。

Dim i As Integer
For i = 1 To 100 Step 1
Cells(i, 5) = Cells(i, 3) * Cells(i, 4)
Next i

繰り返し処理はあらゆるプログラミング言語で最も基本的な処理となります。
今回は繰り返し処理で使う各種ステートメントの使い方についてご紹介します。

各種ループ処理の説明

  1. For Next ステートメント
     冒頭でご紹介したFor Nextステートメントは繰り返し回数を数えるカウンタが所定の回数
     に到達するまで繰り返し処理を行う場合に使われます。
     For Nextステートメントは以下のように記述します。
     繰り返し回数を数えるカウンタ名「i」を指定し、それの初期値「1」から到達値「100」
     に達するまで繰り返し処理を行います。
     カウンタ値の増減数をStep 1で指定して、1づつ増やしながら処理を繰り返します。
     なお、増減数が1の場合は「Step 増減数」の部分を省略することができます。
     
      Dim i As Integer
      For i = 1 To 100 Step 1
       Cells(i, 5) = Cells(i, 3) * Cells(i, 4)
      Next i

  2. Do While Loop ステートメント
     Do While Loopステートメント条件( i < 101)を満たすあいだ処理を繰り返します。
     記述方法は以下の通りです。
     カウンタ「1」からスタートしてカウンタが「101」になるまで繰り返し処理を行います。
     繰り返し処理から強制的に抜け出したい場合は、Exitステートメントを使用します。
     Do Loopステートメントの場合は 「Exit Do」と記述します。

     Dim i As Integer
      i = 1
      Do While i < 101
       Cells(i, 5) = Cells(i, 3) * Cells(i, 4)
       i = i + 1
      Loop

  3. For Each Next ステートメント
     For Each Nextステートメントはワークシートやセルなどの同じオブジェクトの集まりである
    コレクションの各要素に同じ処理を繰り返します。
     下記の例では、オブジェクトにセルを指定してB6セルからB10セルまで繰り返し処理を行います。
     処理を中断させたい場合は Exit For ステートメントを使用することで繰り返し処理を途中で
    終了させることができます。

     Dim Hani As Range
      Dim i As Integer
      i = 6
      For Each Hani In Range(“B6:B10")
       Cells(i, 5) = Cells(i, 3) * Cells(i, 4)
       i = i + 1
      Next

  4. Do Until Loop ステートメント
     「Do While」が条件を満たす間処理を実行するのに対して「Do Until」は条件を満たす迄処理を
     実行します。
     下記の例では最初にカウンタに「i」6をセットしてカウンタ「i」が11になるまで処理を繰り返します。

     Dim i As Integer
      i = 1
      Do Until i = 100
       Cells(i, 5) = Cells(i, 3) * Cells(i, 4)
       i = i + 1
      Loop


    ちなみに1回処理してから、条件を満たすあいだ繰り返し処理する場合は以下のように
    「Loop」の後に「While i < ○○○」「Until i =○○○」をつけるようにします。
     ————————————————
    Dim i As Integer
     i = 1
    Do
       Cells(i, 5) = Cells(i, 3) * Cells(i, 4)
       i = i + 1
    Loop While i < 101
     ———————————————
    Dim i As Integer
    i = 1
    Do
       Cells(i, 5) = Cells(i, 3) * Cells(i, 4)
       i = i + 1
    Loop Until i =100
     ———————————————

サンプルアプリの説明

以下に示した各ボタンをクリックすると数量と単価を掛けた金額が赤枠欄に入ります。

サンプルコード コードの作成手順はこちら

Option Explicit   '変数の宣言を強制する

Sub FORNext処理()
 Dim i As Integer                          'カウンタ変数を定義
 For i = 6 To 10 Step 1                    'カウンタ値を一つ増やす
  Cells(i, 5) = Cells(i, 3) * Cells(i, 4)  '数量×単価を計算して金額欄に金額を入れます
 Next i
End Sub

'---------------------------------------------

Sub ForEach処理()
 Dim Hani As Range
 Dim i As Integer                          'カウンタ変数を定義
 i = 6
 For Each Hani In Range("B6:B10")
  Cells(i, 5) = Cells(i, 3) * Cells(i, 4)  '数量×単価を計算して金額欄に金額を入れます
  i = i + 1                                'カウンタ値を一つ増やす
 Next
End Sub

'---------------------------------------------

Sub DoWhile処理()
 Dim i As Integer                           'カウンタ変数を定義
 i = 6
 Do While i < 11
  Cells(i, 5) = Cells(i, 3) * Cells(i, 4)   '数量×単価を計算して金額欄に金額を入れます
  i = i + 1                                 'カウンタ値を一つ増やす
 Loop
End Sub

'---------------------------------------------

Sub DoUntil処理()
 Dim i As Integer                           'カウンタ変数を定義
 i = 6
 Do Until i = 11
  Cells(i, 5) = Cells(i, 3) * Cells(i, 4)   '数量×単価を計算して金額欄に金額を入れます
  i = i + 1                                 'カウンタ値を一つ増やす
 Loop
End Sub