VBAの実行時エラー438の原因と対処法|初心者でもわかる解決手順

VBAの実行時エラー438の原因と対処法|初心者でもわかる解決手順

本記事には広告(PR)が含まれます。
くわしくは プライバシーポリシー をご確認ください。


Excelでマクロを実行したときに、

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

と表示されて、手が止まってしまったことはありませんか?

このエラーは、
「昨日まで動いていたのに突然エラーが出た」
「マクロを少し編集したら動かなくなった」
といった場面で発生することが多く、原因がわからず困ってしまう方も少なくありません。

私自身も、メソッド名の入力ミスやオブジェクトの指定を間違えたときに、何度もこのエラーに悩まされてきました。

一見すると難しそうなエラーですが、原因の多くは

  • メソッドやプロパティの使い方のミス
  • オブジェクトの指定間違い

といった、基本的なポイントにあります。

また、環境やExcelのバージョンによっては、以前は動いていたコードが突然エラーになるケースもあります。

この記事では、VBA初心者の方でも理解できるように、

  • 実行時エラー438の原因
  • よくある発生パターン
  • 具体的な対処法

をわかりやすく解説していきます。

「エラーの意味がわからない…」という方でも、読み進めることで原因を特定し、スムーズに修正できるようになりますので、ぜひ参考にしてみてください。


目次

🔰やりたいこと別ガイド

「VBAの実行時エラー」で困っている方は、目的に応じてこちらもチェックしてみてください。


VBAの実行時エラー438とは?原因をわかりやすく解説

まずは、このエラーの意味とよくある原因を押さえておきましょう。


エラー438の意味

実行時エラー438は、次のようなメッセージで表示されます。

▶「オブジェクトは、このプロパティまたはメソッドをサポートしていません」

少し難しい表現ですが、簡単に言うと

👉 「その使い方はできません」
👉 「その対象には使えない命令です」

という意味のエラーです。

VBAでは、オブジェクト(例:Worksheet・Rangeなど)ごとに使える「プロパティ」や「メソッド」が決まっています。

しかし、対応していない操作を実行しようとすると、このエラー438が発生します。


よくある発生シーン

実行時エラー438は、特に以下のような場面で発生しやすいです。

●メソッド・プロパティの入力ミス

  • スペルの打ち間違い
  • 存在しないメソッドを使っている

👉 例:Rnage などの誤字


●オブジェクトの指定ミス

  • Worksheetに対してRange用の操作をしている
  • RangeなのにWorksheetのメソッドを使っている

👉 「対象が違う」ことで発生


●記録マクロを編集したとき

マクロの記録で作ったコードを少し変更した際に、

👉 元の構造を崩してしまいエラーになる

ケースも多いです。


●存在しない機能を呼び出している

  • 古い情報を参考にしたコード
  • バージョンによって使えない機能

例:古いActiveX関連の処理などで発生することがあります。

👉 「そもそも使えない命令」になっている場合があります。


エラー438が起きる具体例

実際にエラーが発生する例を見てみましょう。

▼例:Worksheetに対してRangeのメソッドを使っている

Sub Sample()

 Worksheets("Sheet1").SelectAll

End Sub
このコードでは、「SelectAll」というメソッドを使っていますが、

👉 WorksheetにはSelectAllメソッドは存在しません

そのため、実行するとエラー438が発生します。

VBAで実行時エラー438「オブジェクトはこのプロパティまたはメソッドをサポートしていません」と表示された画面
実行時エラー438の表示例(使えないメソッドを実行したときに発生)

▼修正例

Sub Sample()

 Worksheets("Sheet1").Cells.Select

End Sub

このように「Cells」を経由することで、正しく動作します。

VBAでWorksheetsのCells.Selectに修正してエラーが解消されたコード例
Cellsを指定することでエラー438が解消された例

💡ポイント

👉 どのオブジェクトに対して命令しているかを意識することが重要です


突然エラーが出る原因(バージョン・環境差)

「前は動いていたのに、急にエラーが出た…」

このような場合は、環境の影響も考えられます。


●Excelのバージョン違い

  • 新旧バージョンで使える機能が異なる
  • 一部のメソッドが非対応になるケース

●Windows Updateの影響

Windowsの更新後に、

👉 OLEオブジェクトやActiveXが使えなくなる

といった事例も報告されています。


●参照設定のズレ

  • ライブラリの参照が外れている
  • 別PCで開いたときに発生

●古いコードの影響

長期間使っているマクロは、

👉 仕様変更やサポート終了の影響を受けることもある

ため、定期的な見直しが重要です。


実行時エラー438の対処法と再発防止のポイント


①メソッド・プロパティのスペルを確認する

まず最初に確認したいのが、メソッドやプロパティのスペルミスです。

実行時エラー438は、

👉 存在しないメソッドを使ったとき
👉 スペルを間違えたとき

によく発生します。


▼よくあるミス例

  • Rnage(Rangeの誤字)
  • SelectAll(存在しないメソッド)

▼対策ポイント

  • 入力中に表示される候補(IntelliSense)を活用する
  • 手入力ではなく候補から選択する

💡ポイント

👉 **「候補に出てこない=使えない可能性が高い」**です


②オブジェクトの種類を見直す

次に重要なのが、どのオブジェクトに対して処理しているかです。

VBAでは、

  • Workbook(ブック)
  • Worksheet(シート)
  • Range(セル)

など、それぞれ使える命令が異なります。


▼NG例(エラー438)

 Worksheets("Sheet1").SelectAll
👉 Worksheetに対して使えない命令を実行している

▼OK例

 Worksheets("Sheet1").Cells.Select

💡ポイント

👉 「誰に対して命令しているか」を常に意識することが大切です


③似ているエラーとの違いに注意

実行時エラー438と似たエラーに「エラー91」があります。


▼エラー91の例

Dim ws As Worksheet
 Set ws = Worksheets("Sheet1")
ws.Select

※Setを忘れるとエラーになります

VBAで実行時エラー91「オブジェクト変数が設定されていません」と表示された画面
Setを使わずにオブジェクトを代入したときに発生するエラー91の例

▼違い

  • エラー438
    👉 使えない命令を実行している
  • エラー91
    👉 オブジェクトが設定されていない

💡ポイント
👉 原因が違うため、対処方法も異なります

詳しくはこちらの記事をご参考ください。

実行時エラー91を初心者向けに解説


④エラー箇所を特定する(デバッグ方法)

どこでエラーが出ているのかを確認することも重要です。


▼基本の確認方法

  • エラーが出た行を確認する
  • 黄色で止まっている行を見る

▼おすすめの方法

  • F8キーでステップ実行
  • Debug.Printで値を確認

💡ポイント

👉 いきなり全部直そうとせず、1行ずつ確認するのがコツです

デバッグ方法についてはこちらの記事も参考になります。

マクロのステップインとは?初心者でもわかるVBAのデバッグ基本操作を解説


⑤互換性・環境問題の対処

環境によってエラーが出る場合は、次の点を確認しましょう。


▼チェックポイント

  • Excelのバージョン違い
  • Windows Updateの影響
  • 参照設定(VBEの「ツール」→「参照設定」)
  • 別のPCで動くかどうか

特に、

👉 ActiveXやOLE関連は影響を受けやすい

ため注意が必要です。


再発を防ぐためのコツ

最後に、実行時エラー438を防ぐためのポイントも押さえておきましょう。


▼予防のポイント

  • Option Explicit を使う(変数のミス防止)
    変数名の入力ミスや宣言漏れに気づきやすくなり、思わぬエラー防止につながります。
  • オブジェクトの型を明確にする
    Worksheet や Range など対象を明確にしておくと、使えない命令を実行しにくくなります。
  • マクロ記録をそのまま使わず理解して修正する
    記録マクロは便利ですが、そのままだと不要なコードや誤動作の原因になることがあります。
  • コードをコピーした場合は内容を確認する
    他サイトのコードをそのまま使うと、環境違いでエラーになるケースもあるため注意しましょう。
💡ポイント

👉「どのオブジェクトに何をさせるか」を意識すると、438はかなり防ぎやすくなります。


💡もっとスムーズにVBAを使えるようになりたい方へ

今回のようなエラーに悩む方の多くは、

👉「なんとなくコードを書いている」
👉「マクロの記録から少しだけ編集している」

という状態でつまずくことが多いです。

実は、VBAの基本的な考え方を少し理解するだけで、エラーの発生率は大きく下げることができます。

「もっと効率よく学びたい」
「同じようなエラーで悩みたくない」

という方は、こちらの記事もあわせてチェックしてみてください👇

VBAを独学で学ぶには?初心者でもわかるマクロの勉強手順とおすすめ教材


    まとめ

    実行時エラー438は、

    ▶「オブジェクトは、このプロパティまたはメソッドをサポートしていません」

    というメッセージが表示されるエラーで、

    👉 使えない命令を実行しているときに発生するエラーです。


    ✔主な原因

    • メソッド・プロパティのスペルミス
    • オブジェクトの指定間違い
    • 存在しない機能の使用
    • バージョンや環境の違い

    ✔対処のポイント

    • スペルや入力ミスを確認する
    • 対象のオブジェクトを見直す
    • ステップ実行でエラー箇所を特定する

    実行時エラー438は、一見難しそうに見えますが、

    👉 原因の多くは基本的なミスで、落ち着いて確認すれば解決できるケースがほとんどです。

    「どのオブジェクトに対して、どんな命令をしているか」を意識するだけで、自然と防げるようになります。

    まずは今回紹介したポイントを意識しながら、少しずつコードに慣れていきましょう。


    よくある質問(FAQ)

    実行時エラー438はなぜ発生するのですか?
    対象のオブジェクトに対して、対応していないプロパティやメソッドを使っていると発生します。
    特に、スペルミスやオブジェクトの指定間違いが原因になることが多いです。

    突然エラー438が出るようになったのはなぜですか?
    Excelのバージョン違いやWindows Updateの影響で、今まで使えていた機能が使えなくなることがあります。
    また、参照設定のズレなども原因になる場合があります。

    エラー438とエラー1004の違いは何ですか?
    エラー438は「使えない命令を実行している場合」に発生します。
    一方、エラー1004は「処理内容自体に問題がある場合」に発生することが多く、原因の範囲が広いのが特徴です。

    エラーを無視して処理を続けることはできますか?
    On Error Resume Next を使うことで、一時的にエラーを無視することは可能です。
    ただし、根本的な解決にはならないため、原因を特定して修正することをおすすめします。

    【関連記事】

    ※外部リンク※

     

      VBAの実行時エラー438の原因と対処法|初心者でもわかる解決手順
      最新情報をチェックしよう!