ゆるおたノート

Tomorrow is another day.

【VBA】なにか忘れてる? - エラー発生時のチェックリスト(実行時エラー編)

VBAのプログラムを書く機会が増えるにつれて、何度も何度も同じエラー文に遭遇することも増えてきました。
調べてみると、私は焦りやすいせいか何かを見落としている「うっかりケース」が多いみたいです。

そこで、チェックリストとして少し整理することで対策してみます。
※自分の体験ベースなのでかなり偏りがあるはずです。そのあたりは目をつぶっていただけたら幸いです!

実行時エラー(1004): 申し訳ございません。****が見つかりません。名前が変更されたか、移動や削除が行われた可能性があります。

チェック!

  • パスは合ってる?

  • パスの区切り文字(\)は足りてる?

  • フォルダの中は空っぽになってない?

実行時エラー(1004): "****"にアクセスできません。読み取り専用または暗号化されています。

チェック!

  • 「読み取り専用」で開いてる?

  • 不要なら「読み取り専用」解除した?

  • パスの表記は合ってる?

    良くあるミスとして、ファイル名を指定するときに
    Workbooks.Open Filename:="C:¥Book1.xls"
    と、すべきところで
    Workbooks.Open Filename:="Book1.xls"
    としてしまう場合があります。
    それと、ネットワークドライブの場合、
    (¥¥共有DISKなどの指定で)ドライブ名が確定していない場合にもあります。

    Excelのマクロでブックを開こうとするとエラーが出て開けません。長文ですが... - Yahoo!知恵袋

実行時エラー(1004): アプリケーション定義またはオブジェクト定義のエラーです。

チェック!

実行時エラー(9): インデックスが有効範囲にありません。

チェック!

実行時エラー(70): 書き込みできません

どんな時に出る?

ブックを別のフォルダへ移動しようとしたら発生しました。

チェック!

  • ブックは閉じてる?

実行時エラー(91): オブジェクト変数またはWithブロック変数が設定されていません。

チェック!

  • Setキーワードはある?
  • 参照先、ぜんぶ中身ある?
  • プロシージャの戻り値はオブジェクト型で指定できてる?
  • インスタンスInitializeできてる?(クラスのNewできてる?)
    • 「親クラス」が空っぽになってない?
    • 「子クラス」も確認した?
  • コンストラクタ(Initializeメソッド)の引き数は合ってる?
  • 値のプロパティにオブジェクトの参照値入れようとしてない?

実行時エラー(424): オブジェクトが必要です。

どういう意味?

オブジェクトがNothingらしいです。

チェック!

  • どこか別の場所で破棄してない?
  • 参照値は代入してある?
  • 本当に参照値代入できてる?
  • 呼び出す前にNewしてある?
  • Newできてる?(親子関係で中身が空っぽだったりしない?)

実行時エラー(438): オブジェクトは、このプロパティまたはメソッドをサポートしていません。

チェック!

  • プロパティ名やメソッド名は合ってる?
  • 自作プロパティや自作メソッドの名前変えたりした?
  • インテリセンス使えた?
    • 列挙体や構造体の上に変数やプロシージャがあったりしない?
  • Withブロックの依存関係、ズレてない?
    • インデント合ってる?
  • プロパティ呼び出してるだけになってない?
    • 何かに代入してる?
    • 値を見てる?

実行時エラー(-2147221080): オートメーションエラーです。

どんな時に出る?

個人的には、オブジェクトを呼び出すときに遭遇することが多い気がします。

チェック!

連載目次

  1. 当記事【VBA】なにか忘れてる? - エラー発生時のチェックリスト(実行時エラー編) - ゆるおたノート
  2. 【VBA】どこがダメ? - エラー発生時のチェックリスト(コンパイルエラー編) - ゆるおたノート