支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • 【VBA】マクロの繰り返し処理の表現

【VBA】マクロの繰り返し処理の表現方法

Excelでマクロを作成し業務を効率化する上で、非常に役に立つのが「繰り返し処理」です。ある程度ルーチン化された処理ならば、手作業で行わずにVBAを用いてプログラミングを行うことで自動で処理を行うことができ、大幅な業務の効率化を図ることが出来ます。そこで、今回は繰り返し処理のプログラミングについて紹介をしていきます。

マクロとVBA

前提知識としてExcelのマクロとVBAは厳密には同じものではありません。VBAはMicrosoft Visual Basic for Applicationsという正式名称であり、Basic言語をもとにしたプログラミング言語となっています。VBAは簡単な英語表現を用いたプログラミング言語であるのですが、このVBAで作成したプログラムがマクロであるのです。また、Excelではパソコンでの実際の操作を記録してマクロを作成することもできます。これを記録マクロや単にマクロと呼んでいることもあります。今回はVBAを用いた繰り返し処理を行うマクロの作成について解説を行っていきます。

繰り返し処理の記述方法

それではここからはVBAを用いたプログラミングの方法について紹介をしていきます。繰り返し処理の記述方法は幾つかありますので、代表的な物から紹介します。

Do While~Loop

「Do While~Loop」という構文を用いることで、条件を満たしている間繰り返すという処理を行うことが出来ます。書き方は


Do While 条件式
 ’繰り返し処理
Loop

となります。この構文を使用すると、条件式を満たしている場合、つまり条件式がTrueの間は「Do~Loop」に記述された処理を繰り返し行います。


Dim total As Integer
Dim i As Integer

sum = 0
i = 1

Do While i < = 10
    total = total + i
    i = i + 1
Loop

Range("A1").Value = total

まずは「Dim ○○ As Integer」で二つの変数を宣言しました。「Integer」は変数が整数であることを宣言しています。はじめは「total」に「0」、「i」に「1」の数字が入っていますね。そして「Do」以降の処理である足し算を行った1回目の結果として最終的に変数「total」は「1」に、「i」は「2」になりました。条件文は「i < = 10」となっており、1回目の処理の結果では「i」は「2」です。条件文を満たしているので処理を繰り返すことが出来ます。繰り返していくことで、変数「i」が1ずつ増加していますね。最後には変数「11」になった時点で条件式を満たさないので、繰り返し処理をストップします。その後は、「Loop」以降の処理を行うので、ストップした時の変数「total」の値をセルA1に表示して、今回の全ての処理が終了します。

Do Until~Loop

「Do Until~Loop」は条件式を満たさない「False」の場合に繰り返し処理を行う構文です。先程の「Do while~Loop」が条件式を満たす「True」である場合とは逆の構文になっていますね。


Do Until 条件式
 ’繰り返し処理
Loop

条件式を満たさない場合に、「Do Until」から「Loop」の間に記述した処理を繰り返し行います。


Dim i as integer

i = 1

Do Until i > 10
  Cells(i, 1) = 1
  i = i + 1
Loop

今回は、条件式「iが10より大きい」を満たさない場合のみ、指定したセルに「1」を出力します。「i=i+1」で値を増やし、そして条件を満たすまで、繰り返し処理を行います。また、「Do Until ~Loop」の構文は否定の演算子を用いて、「Do While not~ Loop」という記述方法でも表現出来ます。しかし「Do While」「Do Until」の同時に使用すると混同してしまうことで、ミスが生まれる可能性がありますので注意が必要です。

For Next

これまでの記述方法では条件式を用いて繰り返しの判断を行っていました。「Fpr ~Next」は指定した回数だけ繰り返しを行う構文となっています。


For 変数 = 初期値 To 最終値
    (実行する処理1)
    (実行する処理2)
Next 変数

「Fpr ~Next」では、まず回数をカウントするための整数型の変数を1つ宣言しなければなりません。そして初期値の値から最終値まで順に1ずつ増加させ、指定した回数だけ処理を行います。では実際に記述したものを見てみましょう。


Dim i as integer
    For i = 1 To 10
        Worksheets("Sheet1").Cells(i, 1).Value = i
    Next

今回は、ワークシートとセルを指定して処理行うように記述しました。また、ループ行う値は1ずつ増加しますが、増加する量を任意の値にすることもできます。ループを行う値を変更する場合は、「Step」を追加して記述します。


For 変数 = 初期値 To 最終値 Step 増加量
    (実行する処理1)
    (実行する処理2)
Next 変数

ループする値を2ずつ増加させる場合は次のように記述できます。


Dim i As Integer

For i = 2 To 10 Step 2
    (実行する処理1)
    (実行する処理2)
Next i

この場合「2、4、6、8、10」と増加していくので、デフォルトでは10回の繰り返し処理だったものが、5回に変わりました。

まとめ

いかかでしょうか。Excelで繰り返し処理を行うマクロを作成する際の記述方法について解説を行ってきました。今回紹介した構文は基本となっていますので、繰り返し処理を複数記述したり、繰り返し処理の中に異なる繰り返しを入れることも出来ます。記述したマクロをすぐExcelに反映することが出来るのはマクロの大きな魅力であると言えるので、色んな記述方法を試行錯誤してみてください。