「Next で指定された変数の参照が不正です。」の原因・解決方法

Next で指定された変数の参照が不正です。

エラー内容

VBAコンパイル時に、「Next で指定された変数の参照が不正です。」と表示される。

Next で指定された変数の参照が不正です。

原因と解決方法

おもに次の2つの原因と解決方法が考えられます。

原因1. ForとNextの変数が違う

解説

Forでカウンターに指定している変数と、Nextで指定している変数が違う時に起こります。

次のプログラムはForではiNextではjとなっているのでエラーが発生しています。

 

解決方法

ForとNextで指定する変数を同じにします。

 

ただし、プログラムに慣れてきたら、Nextの部分でのカウンタ変数の指定は不要です。
次のようにNextだけでOKです。こちらの方が、一般的な書き方になります。

 

原因2. Nextの閉じる順番が違う

解説

For文が入れ子になっている時、閉じるNextの順番が違う時に発生します。

次のプログラムの場合、入れ子になっている内側の処理から閉じる必要があるのに、逆の順番(i→j)で閉じているのでエラーが発生しています。

 

解決方法

内側の処理からNextで閉じるようにします。
今回の場合は、J→iの順番で指定します。

「ちょっと難しいなぁ・・・」と思った人は、次の入れ子構造を意識してください。
・外のFor文では、変数iを使った繰り返し
・中のFor文では、変数jを使った繰り返し

POINT
入れ子構造の時は、処理が終わったら内側から閉じていくのがポイントです。
そのため、For部分で書く変数名と、Next部分で書く変数の順番は逆になります。

 

Forの入れ子の場合も、プログラムに慣れてきたら、次のようにNextの部分でのカウンタ変数の指定は不要です。

 

POINT
VBAに慣れてきたら、For文のNext部分でのカウンタ変数は不要です。
それよりも、字下げをしてプログラムの構造がわかるようにすることが大事です。

 

関連記事

VBAエラー原因・解決方法
成果を出す5つのポイント
タイトルとURLをコピーしました