Do...Loopステートメントとは
Do...Loopステートメントは、処理を繰り返すときに使用する命令です。同じような命令に、For...Nextステートメントがありましたね。これらの違いは、For...Nextステートメントが、ループカウンタ変数の終了値の指定が必要だったのに対し、Do...Loopステートメントではこれが不要です。まさに、今回のように、処理を何回繰り返すかわからないときに活用できるステートメントといえるでしょう。Do...Loopステートメントの構文は次のとおりです。「Do」と「Loop」の間に記述した命令が繰り返し実行されます。Do...Loopステートメントの書き方は様々なパターンがありますが、下図の場合、Untilキーワードのあとに記述した条件が「命令を実行する前」に判断され、条件が満たされると命令を実行せずに、繰り返し処理を終了します。
Do...Loopステートメントの構文
※Do...Loopステートメントの書き方のパターンは、Whileキーワードを使用して条件を記述したり(継続条件)、条件をLoopの後に記述したりすることができるため、これらの組み合わせで合計4パターンの書き方あります。詳しくは別記事で紹介します。
Do...Loopステートメントを使用する上での4つのポイント
たとえば、下のマクロを実行すると、メッセージで1から5の数値が表示されます。Do...Loopステートメントのサンプル
サンプルの実行結果
このマクロには、Do...Loopステートメントを使用する上で重要なポイントが4つ含まれています。まず、カウンタ変数の宣言と初期化です。処理を繰り返すわけですから、何回処理を繰り返したかカウンタする変数が必要になります(カウンタ変数の宣言)。そして、カウントし始める数値を設定して(カウンタ変数の初期化)、実際にカウントする処理(カウンタ変数の加算)を記述します。忘れてはならないのはDo...Loopステートメントの終了条件の記述。ここでは、カウンタ変数が「6」になったら、命令を実行しないで、繰り返し処理を終了させています。カウンタ変数は「1」で初期化されているわけですから、これで、メッセージで1から5まで表示されるわけです。
Do...Loopステートメントの4つのポイント
Do...Loopステートメントを使用してマクロのイメージを整理しよう
それでは、Do...Loopステートメントを使用して、先に示したマクロのイメージを書き換えてみましょう。まず、繰り返す命令を「ファイル検索」から「セル入力」までとしてくくり出したいところですが、1つめのファイル検索と2つめ以降のファイル検索では、Dir関数の書き方に違いがあります。当然、繰り返す処理としてくくりだす命令は同じ記述になる必要があるので、くくりだす単位は下図のようになります。繰り返す処理をくくりだす
続いて、Do...Loopステートメントを使用してマクロのイメージを書き換えましょう。まず、カウンタ変数を「i」という名前で宣言します。このカウンタ変数は、命令が実行されるたびに加算されるわけですから、カウンタ変数を入力先のセルの行番号として活用します(「エクセルでシート作成するマクロ(For文の活用)」で似たような活用方法を解説しています)。入力先は7行目からなので、カウンタ変数は「7」で初期化します。また、「ファイルが見つかったかどうかの確認」はDo...Loopステートメントの終了条件となります。
Do...Loopステートメントを使用して整理した今回のマクロのイメージ
>次ページから、いよいよマクロを作成します!