【VBAマクロ】実行時エラー1004の原因と解決方法を徹底解説【エクセル初心者向け】

スポンサードリンク
VBA
過去の自分
過去の自分

初めて作ったマクロを実行したら、
「実行時エラー1004」というのが出た…。
これは何?どうしたらいいの?

今の自分
今の自分

なるほど…。
よくわからないエラーが出た時は焦ってしまいますよね…。
でも安心してください。初心者はみんな経験しています。
では今回は、「実行時エラー1004」の原因と解決法
VBAマクロ歴3年の私が、できるだけわかりやすく解説します。

※わかりやすさを重視しております。厳密には解釈が異なる場合がありますのでご了承ください。

スポンサードリンク

実行時エラー1004とは?(エクセルマクロ)

実行時エラー1004

「実行時エラー1004」は、マクロが実行できない場合のエラーで、
構文(VBAコード)やファイル設定に原因がある場合が多いです。

今回は初心者がやってしまいがちなパターンに絞って解説いたします。

スポンサードリンク

実行時エラー1004の原因と解決策

主な原因は以下の3つです。

  • セル指定ミス
  • 存在しないフォルダやファイルを操作した
  • 保護されたシートを編集した

セル指定ミス

実行時エラー1004
Sub エラー1004_1()
    Range(A1).Value = 1 '実行時エラー1004が発生
End Sub

上記コードを実行すると、「実行時エラー1004」が発生します。
原因としては、指定するセル(A1)を「”(ダブルクォーテーション)」で囲っていないからです。
初心者が一番やってしまいがちなミスで、私も経験しています。

解決法は簡単で、下記のとおり指定するセルを「”」で囲うだけです。

Sub エラー1004_1()
    Range("A1").Value = 1
End Sub

セル指定ミスの例をもう1つ紹介いたします。
下記コードをご覧ください。

Sub エラー1004_2()
    Cells(0, 0).Value = 1 '実行時エラー1004が発生
End Sub

A1セルを指定したつもりですが、間違っています。
プログラミング経験者ならやってしまいがちなミスですね。
正しくは下記です。

Sub エラー1004_2()
    Cells(1, 1).Value = 1
End Sub

セルの行番号・列番号は「0」から始まるのではなく、「1」から始まることを覚えておいてください。
また下記のように、変数を宣言して代入を忘れていた場合も「実行時エラー1004」が発生します。

Sub エラー1004_3()
    Dim col As Integer
    Dim row As Integer
    Cells(col, row).Value = 1 '実行時エラー1004が発生
End Sub

int型の変数は、宣言した段階で「0」が代入されています。
その変数をそのまま使用すると、セル(0,0)を指定することになるため起こるエラーです。
下記のように、代入を忘れないようにしましょう。

Sub エラー1004_3()
    Dim col As Integer
    Dim row As Integer
    col = 1
    row = 1
    Cells(col, row).Value = 1
End Sub

存在しないフォルダやファイルを操作した

ファイル操作エラー

別のファイルを開いたり、操作しようとしたときに「実行時エラー1004」が出たときは、下記のような原因が考えられます。

  • ファイル名が存在しない(削除・移動した)
  • ファイル名が間違っている
  • ファイルの場所が間違っている

VBAコードと、実際のファイル(場所やファイル名)を比較してみましょう。

Sub エラー1004_4()
    Workbooks.Open "C:\test9999.xlsx"
End Sub

保護されたシートを編集した

保護されたシートを編集しようとして場合のエラー

保護されたシートを編集しようとすると、「実行時エラー1004」が発生します。
「校閲」→「シートの保護の解除」をクリックし、保護を解除してからマクロを実行してみてください。

スポンサードリンク

実行時エラー1004を減らすには

「実行時エラー1004」の原因は構文にあることが多いとお伝えしました。
ですので、「実行時エラー1004」を減らすには自分が書いた構文を再確認することが重要です。

また、発生したエラーの原因を理解し、頭に入れておくか、メモして再発させないようにするのも大切です。

  1. エラーが発生
  2. 原因を特定・理解する(メモしておく)
  3. 次回、再発させないように構文をチェック

それでもエラーは完全には無くなりません。
プログラミングにエラーはつきものです。
「エラーが出たからダメ」「向いていない」という考え方は捨てましょう。

スポンサードリンク

最後に

マクロ実行時に出る「エラー1004」の原因と解決策について解説いたしました。

当ブログでは、VBAマクロやPythonなど、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。

最後までお読みいただき、ありがとうございました。がんばってください!

タイトルとURLをコピーしました