Excel VBAの繰り返し:For Next

VBA の For Next 文は繰り返し処理を行うための構文です。ここでは、For Next 文の使い方について説明します。

For Next の使い方

For Next の最もシンプルな構文は以下の通りです。

For Next 文では、以下の順序で処理が行われます。

  1. カウンタ変数に初期値に設定した値を代入します。
  2. カウンタ変数と終了値を比較し、終了値以下ならブロック内の処理を実行します。
  3. カウンタ変数に1を加算します。

1は初回のみ実行されます。2〜3はカウンタ変数が終了値より大きくなるまで繰り返し実行されます。

たとえば、次のように「こんにちは!」と5回繰り返す処理があるとします。

For Next を使うと次のように記述することができます。

上の例では、繰り返しは5回実行されます。上の2つのコードは、どちらも同程度の記述量になりますが、もしこの繰り返しを1000回繰り返す場合には For Next を使った方が、より簡潔に記述することができます。

カウンタ変数を参照する

カウンタ変数はブロック内の処理で参照することができます。

以下はカウンタ変数を利用して回数を表示する例です。

実行結果

カウンタ変数の名前は慣習的に i, j, k を使うことが多いです。

カウンタの増減値を変更する:Step

カウンタ変数はデフォルトでは繰り返しのたびに1ずつ加算されていきますが、Step を使うことで繰り返しで加算されていく増減値を変えることもできます。

以下の例では i が2ずつ加算されていきます。

実行結果

Step にマイナスの値を設定した場合は、初期値から値が終了値より小さくなるまで繰り返し処理が実行されます。

実行結果

繰り返し処理を途中で終了する:Exit For

For Next の繰り返し処理を途中で終わりたい場合は、Exit For を使います。

例えば1から100まで値を足していき、100を超える場合は計算をやめるという処理を実装してみます。

実行結果

For Nextでセルを編集

ここまで Debug.Print を使い処理の説明をしてきましたが、実際のプログラムではセルの値を編集するために For Next を使うことが多いです。

Cells とカウンタ変数を使い、指定した行と列のセルに値を代入します。以下のようにセルを指定することができます。

以下は行と列のセルに値を設定する例です。

vba_for_next1

For Next で配列を操作する

配列を操作する場合にも For Next は便利です。配列の場合  UBound(配列変数名)  で配列の最大値が取得でき、それを終了値の値と設定することで配列の要素数だけ繰り返すことができます。

配列のインデックスは0から、Cells のインデックスは1から始まるので、注意してください。

vba_for_next2


Welcome to UX MILK

UX MILKはより良いサービスやプロダクトを作りたい人のためのメディアです。

このサイトについて