Excel VBA(マクロ)を実行したときに、突然「実行時エラー ‘438’: オブジェクトは、このプロパティまたはメソッドをサポートしていません。」と表示されて止まることがあります。初めて見ると戸惑いますが、原因のパターンは決まっています。このページでは、2026年現在のExcel(Microsoft 365/Excel 2021/2024/2019)で確認できる、エラー438の原因と直し方を順番に解説します。
エラー438とは
エラー438は、ひとことで言うと「指定したオブジェクトに、そのプロパティやメソッドが存在しない(使えない)」ときに出るエラーです。たとえばセルやシート、ブックといったオブジェクトに対して、本来そのオブジェクトが持っていない命令を呼び出すと発生します。
エラー438が出る主な原因
| 原因 | 説明 |
|---|---|
| スペルミス | プロパティ名・メソッド名のつづり間違い(例:Value を Vaiue) |
| オブジェクトの種類の誤り | そのオブジェクトに使えない命令を呼んでいる(例:Workbook に存在しないメソッド) |
| オブジェクト変数の未設定 | Set でシートやブックを入れる前に変数を使っている |
| 参照設定が「参照不可」 | 外部ライブラリへの参照が壊れ、その命令が認識されない |
例1:スペルミス
下のコードは Value を Vaiue と打ち間違えています。これだけでエラー438になります。
Range("A1").Vaiue = "こんにちは"
正しくは Range("A1").Value = "こんにちは" です。
例2:オブジェクトの種類の誤り
下のコードは、複数形の Workbooks に対して Activate を呼んでいます。Activate は1冊のブックを表す Workbook のメソッドなので、Workbooks(コレクション)に直接呼ぶとエラーになります。
Workbooks.Activate
正しくは特定のブックを指定して Workbooks("Book1.xlsx").Activate のように書きます。
例3:オブジェクト変数の未設定
下のコードは ws という変数を宣言しただけで、まだどのシートも入れていません。中身が空のまま Cells を使うとエラー438になります。
Dim ws As Worksheet
ws.Cells(1, 1).Value = "データ"
エラー438の対処法
次の手順で、上から順に確認していきます。
- スペルを確認する:エラーで止まった行の、プロパティ名・メソッド名のつづりを確認します。
- オブジェクトとの対応を確認する:その命令が、対象のオブジェクトに本当に使えるものか確認します(単数 Workbook と複数 Workbooks の取り違えなどに注意)。
- Set でオブジェクト変数を設定する:変数を使う前に、必ず
Setでシートやブックを代入します。 - 参照設定を確認する:外部ライブラリを使うコードで438が出るときは、VBEの「ツール」→「参照設定」を開き、先頭に「参照不可」と付いた項目がないか確認します(後述)。
例3は、次のように Set でシートを入れれば直ります。
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
ws.Cells(1, 1).Value = "データ"
「参照不可(MISSING)」を確認・解除する手順
他のパソコンで作ったマクロを開いたときなどに、参照していた外部ライブラリが見つからず、その命令が一斉にエラー438になることがあります。VBE(Visual Basic Editor)の参照設定で確認します。
- Excelで Alt + F11 を押してVBE(Visual Basic Editor)を開きます。
- メニューの「ツール」→「参照設定」をクリックします。
- 一覧の上のほうに、先頭が「参照不可:(MISSING:)」となっている項目がないか確認します。
- 不要なら、その項目のチェックを外して「OK」を押します。必要なライブラリなら、正しい場所にあるものへチェックを付け直します。


よくある質問
Q1:エラー438が出たら、最初に何を確認すべき?
まずエラーで止まった行のプロパティ名・メソッド名のスペルを確認してください。次に、その命令が対象オブジェクトに使えるものかを確認します。外部ライブラリを使うコードなら参照設定の「参照不可」も確認します。
Q2:エラー438とエラー91の違いは?
エラー438は「そのプロパティ/メソッドが存在しない」とき、エラー91は「オブジェクト変数が設定されていない(Set し忘れ)」ときに出ます。Set 忘れのときはエラー91が出ることが多いですが、続く行の書き方によっては438になることもあります。どちらも変数の設定を見直すのが基本です。
まとめ
エラー438は、スペルミス・オブジェクトの種類違い・Set 忘れ・参照不可のいずれかがほとんどです。エラーで止まった行を起点に、上の4点を順番に確認すれば確実に切り分けられます。外部ライブラリを使うマクロで突然出たときは、VBEの「ツール」→「参照設定」の「参照不可」を真っ先に疑ってください。
最終確認日:2026年6月


コメント