Excel VBA 1004エラーの原因ごとの対処方法とエラーハンドリング

 

Excel VBAの1004エラーは、様々な原因で発生します。今回は、Excel VBAで実行されるマクロやコードにおいて、対象となるオブジェクトが存在しない、または正しく参照されていない場合の対処方法や、注意点やエラーハンドリング実装のサンプルコードを紹介します。

 

📌 「これ、自動化できたらラクなのに…」と思ったこと、ありませんか?
実はその作業、Excelマクロで簡単に自動化できるかもしれません。
「でもマクロって難しそう…」という方のために、完全初心者向けの入門記事をご用意しました!

👇実務で“そのまま使える”テンプレ付きで、コピペするだけ
初心者向けエクセルマクロの作り方を解説|コピペOK実務テンプレ付き

 

Excel VBA 1004エラー

1004エラーは、特定のセルや範囲、シート、ブックなどのオブジェクトにアクセスするExcel VBAコードを実行する際、それらのオブジェクトが存在しない場合や正しく参照されていない場面で発生します。

 

1004エラーの対処方法

エラーが発生する原因となる可能性がある箇所でエラーチェックして、存在しないオブジェクトにアクセスする前に確認で、エラーを回避します。

 

Excel VBA 1004エラー注意点

1004エラーは実行時エラーであり、発生するとプログラムが停止します。エラーが発生する箇所を特定し、それに対するエラーハンドリングを実装することが重要です。

 

Excel VBA 1004エラー対処サンプルコード

 

自分の実力を客観的にチェックしたい。そんな方のために、自分に合った学習スタート地点がわかる無料の選択問題集をご用意しました。(VBAエキスパートベーシック資格試験から抜粋した問題です)

無料138問でいまの実力をチェック

555点以上ならベーシック合格レベル、345〜550点はベーシック理解途中、340点以下は基礎理解不足※ご安心ください。この問題をされた人の情報は一切残りません。実力のチェックができる問題集で、クリックすぐにスタートではありません。解説内容の下に問題があります)

 

Option Explicit

Sub SampleCode()
    Dim ws As Worksheet
    
    ' シートが存在するか確認
    On Error Resume Next
    Set ws = Worksheets("Sheet1")
    On Error GoTo 0
    
    ' シートが存在する場合の処理
    If Not ws Is Nothing Then
        ' シートが存在する場合のコードを記述
        ws.Range("A1").Value = "Hello, World!"
    Else
        ' 存在しない場合のエラー処理
        MsgBox "Sheet1が見つかりません。"
    End If
End Sub

サンプルコードは、Sheet1のワークシートが存在するかどうかを確認しています。存在すればA1セルにメッセージを書き込み、存在しなければエラーメッセージを表示します。これで、存在しないオブジェクトにアクセスしての1004エラーを回避しています。

 

生成AIで業務改善を始めたい方へ

Excelの業務改善に興味がある方は、生成AIを活用することで、さらに効率化できる可能性があります。

目的に合わせて、こちらの記事をご覧ください。