本記事には広告(PR)が含まれます。
くわしくは プライバシーポリシー をご確認ください。
Excelでマクロを実行したときに、
▶「実行時エラー438:オブジェクトは、このプロパティまたはメソッドをサポートしていません」
と表示されて、手が止まってしまったことはありませんか?
このエラーは、
「昨日まで動いていたのに突然エラーが出た」
「マクロを少し編集したら動かなくなった」
といった場面で発生することが多く、原因がわからず困ってしまう方も少なくありません。
私自身も、メソッド名の入力ミスやオブジェクトの指定を間違えたときに、何度もこのエラーに悩まされてきました。
一見すると難しそうなエラーですが、原因の多くは
- メソッドやプロパティの使い方のミス
- オブジェクトの指定間違い
といった、基本的なポイントにあります。
また、環境やExcelのバージョンによっては、以前は動いていたコードが突然エラーになるケースもあります。
この記事では、VBA初心者の方でも理解できるように、
- 実行時エラー438の原因
- よくある発生パターン
- 具体的な対処法
をわかりやすく解説していきます。
「エラーの意味がわからない…」という方でも、読み進めることで原因を特定し、スムーズに修正できるようになりますので、ぜひ参考にしてみてください。
🔰やりたいこと別ガイド
「VBAの実行時エラー」で困っている方は、目的に応じてこちらもチェックしてみてください。
- ▶ 実行時エラー全体の原因と対処法を知りたい
👉 VBAの実行時エラーとは?原因と対処法まとめ - ▶ よくあるエラーを個別に確認したい
👉 エラー9(インデックスが有効範囲にありません)
👉 エラー91(オブジェクト変数が設定されていません)
👉 エラー400(原因不明エラー)
👉 エラー1004(アプリケーション定義またはオブジェクト定義エラー) - ▶ エラーを無視・制御したい(上級者向け)
👉 VBAのエラーハンドリング(On Error)の使い方
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
👉 WorksheetにはSelectAllメソッドは存在しません
そのため、実行するとエラー438が発生します。

▼修正例
Sub Sample()
Worksheets("Sheet1").Cells.Select
End Sub
このように「Cells」を経由することで、正しく動作します。

💡ポイント
👉 どのオブジェクトに対して命令しているかを意識することが重要です
突然エラーが出る原因(バージョン・環境差)
「前は動いていたのに、急にエラーが出た…」
このような場合は、環境の影響も考えられます。
●Excelのバージョン違い
- 新旧バージョンで使える機能が異なる
- 一部のメソッドが非対応になるケース
●Windows Updateの影響
Windowsの更新後に、
👉 OLEオブジェクトやActiveXが使えなくなる
といった事例も報告されています。
●参照設定のズレ
- ライブラリの参照が外れている
- 別PCで開いたときに発生
●古いコードの影響
長期間使っているマクロは、
👉 仕様変更やサポート終了の影響を受けることもある
ため、定期的な見直しが重要です。
実行時エラー438の対処法と再発防止のポイント
①メソッド・プロパティのスペルを確認する
まず最初に確認したいのが、メソッドやプロパティのスペルミスです。
実行時エラー438は、
👉 存在しないメソッドを使ったとき
👉 スペルを間違えたとき
によく発生します。
▼よくあるミス例
Rnage(Rangeの誤字)SelectAll(存在しないメソッド)
▼対策ポイント
- 入力中に表示される候補(IntelliSense)を活用する
- 手入力ではなく候補から選択する
💡ポイント
👉 **「候補に出てこない=使えない可能性が高い」**です
②オブジェクトの種類を見直す
次に重要なのが、どのオブジェクトに対して処理しているかです。
VBAでは、
- Workbook(ブック)
- Worksheet(シート)
- Range(セル)
など、それぞれ使える命令が異なります。
▼NG例(エラー438)
Worksheets("Sheet1").SelectAll
▼OK例
Worksheets("Sheet1").Cells.Select
💡ポイント
👉 「誰に対して命令しているか」を常に意識することが大切です
③似ているエラーとの違いに注意
実行時エラー438と似たエラーに「エラー91」があります。
▼エラー91の例
Dim ws As Worksheet
Set ws = Worksheets("Sheet1")
ws.Select
※Setを忘れるとエラーになります

▼違い
- エラー438
👉 使えない命令を実行している - エラー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)
特に、スペルミスやオブジェクトの指定間違いが原因になることが多いです。
また、参照設定のズレなども原因になる場合があります。
一方、エラー1004は「処理内容自体に問題がある場合」に発生することが多く、原因の範囲が広いのが特徴です。
On Error Resume Next を使うことで、一時的にエラーを無視することは可能です。ただし、根本的な解決にはならないため、原因を特定して修正することをおすすめします。
【関連記事】
- VBAの実行時エラーとは?原因と対処法まとめ|よくあるエラー一覧も解説
- Excel VBAでエラー400が発生する原因と対処法|マクロ初心者でもわかる解決手順
- Excel VBAのエラー処理とは?On Errorの使い方とエラーハンドリングの基本を解説
※外部リンク※
※参考書籍 (PR)※
- 【Excel VBAのエラーを直す本 なぜ、あなたのVBAはスムーズに動かないのか?】(Amazon)
- 【実務で使えるExcel VBAプログラミング作法 ~「動けばOK」から卒業しよう! 生産性が上がるコードの書き方】(Amazon)
※本ボックスにはアフィリエイトリンク(PR)が含まれます。
くわしくは プライバシーポリシー へ。
