エラー内容
VBAコンパイル時に、「For に対応する Next がありません。」と表示される。
原因と解決方法
おもに次の2つの原因と解決方法が考えられます。
原因1. For文の閉じ忘れ
解説
繰り返し処理の終わり(For文の処理の最後)に、Nextを書いていないと起こります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Sub ErrSample03_01() Dim i As Long For i = 1 To 5 Cells(i, 1).Value = i '← Nextがない MsgBox "終了しました。" End Sub |
解決方法
繰り返し処理の終わりに、Nextを追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Sub ErrSample03_01() Dim i As Long For i = 1 To 5 Cells(i, 1).Value = i Next '← Nextを追加 MsgBox "終了しました。" End Sub |
※今回の例の場合、「Cells(i, 1).Value = iの」の後ろにNextを追加します。
繰り返し処理でない「MsgBox “終了しました。”」の後ろにNextを追加すると、メッセージが何回も表示されてしまいます。
原因2. Nextの数が足りない
解説
For文がネスト(入れ子)になっていて、Forに対するNextが足りていない場合にも起こります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Sub ErrSample03_02() Dim i As Long Dim j As Long For i = 1 To 5 For j = 1 To 3 Cells(i, j).Value = i '← Nextが足りない Next MsgBox "終了しました。" End Sub |
解決方法
ForとNextがペアになるように修正します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Sub ErrSample03_02() Dim i As Long Dim j As Long For i = 1 To 5 For j = 1 To 3 Cells(i, j).Value = i Next '← Nextを追加 Next MsgBox "終了しました。" End Sub |
※入れ子の場合、繰り返し処理が複雑なので、Nextを追加する場所に注意しましょう。
POINT
今回の例のように、字下げを適当にしていると見つけるのに苦労します。
入れ子構造の時は、字下げをして構造が見やすいようにしましょう。
字下げは、コートの先頭でTabキーを押下すれば、右にコードが移動します。
今回の例のように、字下げを適当にしていると見つけるのに苦労します。
入れ子構造の時は、字下げをして構造が見やすいようにしましょう。
字下げは、コートの先頭でTabキーを押下すれば、右にコードが移動します。
POINT
Forを入力したした後は、中身のプログラムを入力せずに、先にNextを入力しましょう。
その後、For文の中身のプログラムを書くようにすれば、Nextの入力漏れが格段に減ります。
Forを入力したした後は、中身のプログラムを入力せずに、先にNextを入力しましょう。
その後、For文の中身のプログラムを書くようにすれば、Nextの入力漏れが格段に減ります。