VBAで「アプリケーション定義またはオブジェクト定義のエラーです。」の対処
VBAで「アプリケーション定義またはオブジェクト定義のエラーです。」の対処方法について紹介します。
このエントリーはVBAビギナーの方向けの内容です。
1.問題点
次のような簡単なVBAのコードを記述します。
Option Explicit
Sub test()
Dim i As Integer
For i = 0 To 9
Worksheets("Sheet1").Cells(i, 1).Value = i
Next i
End Sub
このコードはFor文を10回繰り返して、For文で使っている変数iの値をセルに表示させるという簡素なものです。
が、このコードを実行すると、次の「アプリケーション定義またはオブジェクト定義のエラーです。」というエラーになります。
表示されたダイアログの「デバッグ」をクリックすると
Worksheets("Sheet1").Cells(i, 1).Value = i
の部分が黄色いマーカーで表示され、この行を実行したときにエラーになっていることが分かります。
2.原因
このエラーになる原因は、Cells()を使ったときの第1パラメータの変数iに「0」が設定されているためです。
Cells()で指定するセルの指定位置は「Cells(1,1)」からなので、「0」が指定されるとこのエラーが発生します。
つまり、変数iの値が0にならないよう、コードを赤色部分のように修正すれば、エラーが発生せずに正常に動作します。
Option Explicit
Sub test()
Dim i As Integer
For i = 1 To 10
Worksheets("Sheet1").Cells(i, 1).Value = i
Next i
End Sub
実行結果
あるいは次のように変更します。
Option Explicit
Sub test()
Dim i As Integer
For i = 0 To 9
Worksheets("Sheet1").Cells(i + 1, 1).Value = i
Next i
End Sub
実行結果
本題とは関係ありませんが、上記2つのコードは出力結果が異なるので注意してください。
簡単なサンプルではエラー原因が一目で分かりますが、そもそも「アプリケーション定義またはオブジェクト定義のエラーです。」という意味が不明なので、規模の大きなコードでこのエラーが出たときは何が原因か分かりにくくなりがちです。
基本に戻って思い出すといいでしょう。
Posted by yujiro このページの先頭に戻る
トラックバックURL
コメントする
greeting