VBA開発で「実行時エラー’1004’」というエラーダイアログが表示されることがあります。このメッセージでは原因がつかめず、対処方法に困ることがあります。「アプリケーション定義またはオブジェクト定義のエラーです」「RangeクラスのSelectメソッドが失敗しました」では全然わかりませんね。今回は、その原因と解決方法を紹介します。
なお、存在しないファイルを開こうとした時も「実行時エラー’1004’」となりますが、「○○ファイルが見つかりません」とわかりやすいエラー原因が表示されるので今回は省略します。
Cellsに範囲外の値を設定した
以下のプログラムでは、col変数が未設定の状況でCellsプロパティへ設定しています。この際に「実行時エラー’1004’」が発生します。Debug.printでcolを表示させても「0」と表示されるため問題なさそうに見えるので要注意です。
Option Explicit
Sub sample()
Dim row As Integer
Dim col As Integer
row = 1
Cells(row, col).Value = "適当な文字列" 'ここで「実行時エラー'1004'」が発生
End Sub
アクティブではないシートのセルを選択した
以下のプログラムでは、Sheet1をアクティブにした状態で、Sheet2のセルを選択しています。この際に「実行時エラー’1004’」が発生します。「RangeクラスのSelectメソッドが失敗しました」と原因が表示されます。複数シートを操作するVBAを作成するときは要注意です。
Option Explicit
Sub sample()
Worksheets("Sheet1").Activate
Worksheets("Sheet2").Range("A1").Select 'ここで「実行時エラー'1004'」が発生
End Sub