プログラミング初心者必須のEXCEL VBA繰り返し処理

  • URLをコピーしました!

プログラミングにおいて、繰り返し処理の理解は、避けて通れない重要な文法です。

ところが、繰り返し処理の文法が割と結構な数のお作法があり、初心者にはなかなか覚えづらいものとなっています。

この記事では、初心者向けに繰り返し処理が簡単にわかる説明と普段の現場で使うテクニックを説明していきます。

この記事を読むとできるようになること
・繰り返し処理の概念、現場で使う局面が理解できる。
・実際にEXCELで繰り返し処理を使うコーディング方法がわかる。

目次

「繰り返し処理」を使う時

繰り返し処理の使う時

例えば、顧客を管理しているデータベースからデータ抽出して40歳代の顧客にDMを作成したい。

そのようなプログラムを開発するとき・・・

  • データベースから条件を満たす対象者を抽出
  • 抽出した対象者にDMを作成

と考えますよね。

  • 日々のトランザクションにより、顧客の数が増減する
    対象者の件数は、何件存在するかわからない。
  • プログラムが走行するたびに、データの状況に応じて処理件数は変動する。

こんな時、繰り返し処理を使ってプログラミングしていくことが必要となります。

繰り返し処理を使わずにプログラムを作ってください、と言われても
繰り返し処理を使わずにプログラムを作成することは現実的に不可能です・・・。
それくらい繰り返し処理は、重要です。

VBAにおける繰り返し処理の種類

VBAにおける繰り返し処理の説明画像

VBAでは、次の3つの方法で繰り返し処理(ループ処理)を書くことができます。

  1. For Nextステートメント
  2. Whileステートメント
  3. For Eachステートメント

For Nextステートメントの使い方について

基本構文は以下のとおりです。

For cnt = 1 to 10
‘ここに繰り返す処理をコーディングする。
Next cnt

変数cntに1から10までを1つずつ格納し入れていき
変数cntが10になるまで処理を繰り返す。

ポイント
・予め繰り返し処理を行う回数が決まっている場合に使用する。
(例)画面に30明細分データを表示する場合や、帳票に10明細データを印字する場合 など

では実際にコーディング例をみてみましょう。

Sub sample_loop()
  Dim cnt As Long
  
  For cnt = 1 To 10
    Cells(cnt, 2) = Cells(cnt, 1).Value * 2
  Next cnt

End Sub

<コーディング説明>
繰り返し1回目: セルA列の1行目 × 2 の計算結果を セルBの1行目に代入しています。
繰り返し2回目: セルA列の2行目 × 2 の計算結果を セルBの2行目に代入しています。

これを変数cntが10になるまで10回繰り返すコーディング例となります。
実際にみなさんのパソコンのEXCELを起動し、セルA1からA10まで数字を入力してみてください。

For Nextステートメントを実行するためのテストデータ

では実際に次のVBEを起動してソースコードをコピペで貼り付けてください。

For Nextステートメントのソースコードのハードコピー

それでは、F5をクリックしてマクロを実行してみましょう。

For Nextステートメントのプログラム実行結果

B列の1行目から10行目まで、A列の値を2倍にした計算結果が出力されました!

Do While ステートメントの使い方について

基本構文は以下のとおりです。

Do While 〇〇〇
‘ ここに繰り返す処理をコーディングする。
Loop

〇〇〇の条件を満たす場合に繰り返し処理を行う。

ポイント
・繰り返し処理を行う回数が決まっていない場合に使用する。
(例)条件に合致するすデータを抽出し、1件ずつ集計して数を求める場合
   条件を満たすデータを抽出し、1件ずつファイル出力や、別のデータに編集する場合など

では実際にコーディング例をみてみましょう。

Sub sample_loop()

 Dim cnt As Long
 
 cnt = 1
 
 Do While Cells(cnt, 1).Value <> ""
    Cells(cnt, 2) = Cells(cnt, 1).Value * 2
    cnt = cnt + 1
 Loop

End Sub

<コーディング説明>
3行目でlong型の変数を定義し、初期値ゼロで変数が割り当てられるため、
5行目で初期値として、あえて1を代入しています。
7行目から10行目までが繰り返し処理となります。

(繰り返し1回目)
 7行目 A列の1行目の値が空白でないため処理を続行する。
 8行目 セルA列の1行目 × 2 の計算結果を セルBの1行目に代入しています。
 9行目 変数cntに+1をします。
 
 ※そしてまた7行目に戻り、繰り返し条件の判定を行います。
(繰り返し2回目)
 7行目 A列の2行目の値が空白でないため処理を続行する。
 8行目 セルA列の2行目 × 2 の計算結果を セルBの2行目に代入しています。
 9行目 変数cntに+1をします。

そしてA列の値が空白のセルが現れるまでEXCELを縦にカウントして、
繰り返し条件を判定しながら処理を行っていきます。

さきほどと同様に 実際にみなさんのパソコンのEXCELを起動し、セルA1からA10まで数字を入力してみてください。

Do Whileステートメントを実行するためのテストデータ

では実際に次のVBEを起動してソースコードをコピペで貼り付けてください。

それでは、さきほどと同様に、F5をクリックしてマクロを実行してみましょう。

Do Whileステートメントのプログラム実行結果

こちらも、B列の1行目から10行目まで、A列の値を2倍にした計算結果が出力されましたね!
ちなみに繰り返し処理の回数は固定ではありませんので、A列のセルに数字を入力した分だけ、B列に計算結果が反映されますよ。

あとFor Eachステートメントという繰り返し処理がありますが、
主にコレクション、配列を処理するときに使います。
For Nextステートメント、Do While ステートメントをマスターしてからでも十分です。
まずはこの2つをばっちり理解しましょう。

まとめ

VBA繰り返し処理のまとめ


プログラムを書く際に、プログラム仕様に応じて、繰り返し処理の型を使い分けましょう。

繰り返し処理には、
 ・予め繰り返し処理の回数が定まっている場合
 ・繰り返し処理の回数が定まっていない場合
大きく2つ書き方がある。

プログラム言語によって、微妙に書き方は変わってきますが
考え方を理解すれば、文法は暗記しなくても大丈夫です。

コーディング回数を重ねていけば
必ず自然と覚えていくようになりますので
是非、これから実践しながら体で覚えていきましょう。

最後までお読みいただきありがとうございました。

この記事が気に入ったら
いいねしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次