VBAを実行すると実行時エラー’1004’「アプリケーション定義またはオブジェクト定義のエラーです」が出たことはないでしょうか。
そんな中で悩むことは、
・VBA 実行時エラー’1004’「アプリケーション定義またはオブジェクト定義のエラーです」の対処はどうすればよい?
ですよね。
今回は、
についてまとめます!
もくじ
VBA エラー 1004の原因1「正しくないフォーミュラを指定した場合」
正しくないフォーミュラを指定した場合にエラーが発生します。
サンプルコードです。
指定RangeのValueプロパティに正しくないフォーミュラを指定しています。
Sub エラー再現テスト1()
Range("A1").Value = "=SUM((1:A10)"
End Sub
指定RangeのFormulaプロパティに正しくないフォーミュラを指定しています。
Sub エラー再現テスト2()
Range("A1").Formula = "=SUM((1:A10)"
End Sub
指定RangeのFormula2プロパティに正しくないフォーミュラを指定しています。
Sub エラー再現テスト3()
Range("A1").Formula2 = "=SUM((1:A10)"
End Sub
エラー「アプリケーション定義またはオブジェクト定義のエラーです」がでましたね。
VBA エラー 1004の原因2「Cellsコレクションのインデックスが0である場合」
Cellsコレクションのインデックスが0である場合にエラーが発生します。
サンプルコードです。
Cellsコレクションのインデックスに0を指定しています。
Sub エラー再現テスト4()
MsgBox Cells(0, 1)
End Sub
エラー「アプリケーション定義またはオブジェクト定義のエラーです」がでましたね。
VBA エラー 1004の原因3「CellsコレクションのインデックスがExcelのシートの最大行数を超えている場合」
CellsコレクションのインデックスがExcelのシートの最大行数を超えている場合にエラーが発生します。
なお、Excelのシートの最大行数は1048576行です。
サンプルコードです。
CellsコレクションのインデックスにExcelのシートの最大行数+1を指定しています。
Sub エラー再現テスト5()
MsgBox Cells(1048577, 1)
End Sub
エラー「アプリケーション定義またはオブジェクト定義のエラーです」がでましたね。
「Range(“A1048577”)」
VBA エラー 1004の原因4「CellsコレクションのインデックスがExcelのシートの最大列数を超えている場合」
CellsコレクションのインデックスがExcelのシートの最大列数を超えている場合にエラーが発生します。
なお、Excelのシートの最大列数は16384列です。
サンプルコードです。
CellsコレクションのインデックスにExcelのシートの最大列数+1を指定しています。
Sub エラー再現テスト6()
MsgBox Cells(1, 16385)
End Sub
エラー「アプリケーション定義またはオブジェクト定義のエラーです」がでましたね。
VBA エラー 1004の原因1「正しくないフォーミュラを指定した場合」の対処法
正しくないフォーミュラを指定した場合の対処法は正しいフォーミュラに直すことです。
サンプルコードです。
先ほどのエラー原因でのコードは、=SUM((1:A10) という式には括弧が余計に入っていましたので、
指定RangeのValueプロパティに文法的に正しいフォーミュラ”=SUM(A1:A10)”を指定しなおしました。
Sub エラー再現テスト1()
Range("A1").Value = "=SUM(A1:A10)"
End Sub
こちらも正しいフォーミュラにしました。
Sub エラー再現テスト2()
Range("A1").Formula = "=SUM(A1:A10)"
End Sub
こちらもです。
Sub エラー再現テスト3()
Range("A1").Formula2 = "=SUM(A1:A10)"
End Sub
一件づつ実行してみると、エラーは発生せず、問題ないことが確認できましたね。
VBA エラー 1004の原因2「Cellsコレクションのインデックスが0である場合」の対処法
VBAでは、Cellsコレクションのインデックスは1から始まりますのでCellsコレクションのインデックスを1以上に指定しましょう。
サンプルコードです。
Cellsコレクションのインデックスに1を指定しています。
Sub エラー再現テスト4()
MsgBox Cells(1, 1)
End Sub
問題ないですね。
VBA エラー 1004の原因3「CellsコレクションのインデックスがExcelのシートの最大行数を超えている場合」の対処法
CellsコレクションのインデックスはExcelのシートの最大行数1048576行を超えないようにしましょう。
サンプルコードです。
CellsコレクションのインデックスにExcelのシートの最大行数以内を指定しています。
Sub エラー再現テスト5()
MsgBox Cells(1048576, 1)
End Sub
問題ないですね。
VBA エラー 1004の原因4「CellsコレクションのインデックスがExcelのシートの最大列数を超えている場合」の対処法
CellsコレクションのインデックスはExcelのシートの最大列数16384列を超えないようにしましょう。
サンプルコードです。
CellsコレクションのインデックスにExcelのシートの最大列数+1を指定しています。
Sub エラー再現テスト6()
MsgBox Cells(1, 16384)
End Sub
こちらも問題ないですね。
さいごに
今回は、
についてまとめました。
VBAのエラーはパターンを知っておくと発生した時に慌てず対応することができますので、
しっかりと対処方法を把握するようにしておきたいですね!
コメントを残す