【EXCEL VBA】実行時エラー’1004’を解決したい

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