プログラミングにおいて、繰り返し処理の理解は、避けて通れない重要な文法です。
ところが、繰り返し処理の文法が割と結構な数のお作法があり、初心者にはなかなか覚えづらいものとなっています。
この記事では、初心者向けに繰り返し処理が簡単にわかる説明と普段の現場で使うテクニックを説明していきます。
「繰り返し処理」を使う時
例えば、顧客を管理しているデータベースからデータ抽出して40歳代の顧客にDMを作成したい。
そのようなプログラムを開発するとき・・・
- データベースから条件を満たす対象者を抽出
- 抽出した対象者にDMを作成
と考えますよね。
- 日々のトランザクションにより、顧客の数が増減する
対象者の件数は、何件存在するかわからない。 - プログラムが走行するたびに、データの状況に応じて処理件数は変動する。
こんな時、繰り返し処理を使ってプログラミングしていくことが必要となります。
繰り返し処理を使わずにプログラムを作ってください、と言われても
繰り返し処理を使わずにプログラムを作成することは現実的に不可能です・・・。
それくらい繰り返し処理は、重要です。
VBAにおける繰り返し処理の種類
VBAでは、次の3つの方法で繰り返し処理(ループ処理)を書くことができます。
- For Nextステートメント
- Whileステートメント
- 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まで数字を入力してみてください。
では実際に次のVBEを起動してソースコードをコピペで貼り付けてください。
それでは、F5をクリックしてマクロを実行してみましょう。
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まで数字を入力してみてください。
では実際に次のVBEを起動してソースコードをコピペで貼り付けてください。
それでは、さきほどと同様に、F5をクリックしてマクロを実行してみましょう。
こちらも、B列の1行目から10行目まで、A列の値を2倍にした計算結果が出力されましたね!
ちなみに繰り返し処理の回数は固定ではありませんので、A列のセルに数字を入力した分だけ、B列に計算結果が反映されますよ。
あとFor Eachステートメントという繰り返し処理がありますが、
主にコレクション、配列を処理するときに使います。
For Nextステートメント、Do While ステートメントをマスターしてからでも十分です。
まずはこの2つをばっちり理解しましょう。
まとめ
プログラムを書く際に、プログラム仕様に応じて、繰り返し処理の型を使い分けましょう。
繰り返し処理には、
・予め繰り返し処理の回数が定まっている場合
・繰り返し処理の回数が定まっていない場合
大きく2つ書き方がある。
プログラム言語によって、微妙に書き方は変わってきますが
考え方を理解すれば、文法は暗記しなくても大丈夫です。
コーディング回数を重ねていけば
必ず自然と覚えていくようになりますので
是非、これから実践しながら体で覚えていきましょう。
最後までお読みいただきありがとうございました。