当サイトの記事にはプロモーションが含まれています。

Excel VBAで発生するエラー438の原因と対処法【初心者向け解決ガイド】

パソコンパソコン・スマホ教室
スポンサーリンク

Excel VBA(マクロ)を実行したときに、突然「実行時エラー ‘438’: オブジェクトは、このプロパティまたはメソッドをサポートしていません。」と表示されて止まることがあります。初めて見ると戸惑いますが、原因のパターンは決まっています。このページでは、2026年現在のExcel(Microsoft 365/Excel 2021/2024/2019)で確認できる、エラー438の原因と直し方を順番に解説します。

スポンサーリンク

エラー438とは

エラー438は、ひとことで言うと「指定したオブジェクトに、そのプロパティやメソッドが存在しない(使えない)」ときに出るエラーです。たとえばセルやシート、ブックといったオブジェクトに対して、本来そのオブジェクトが持っていない命令を呼び出すと発生します。

エラー438が出る主な原因

原因 説明
スペルミス プロパティ名・メソッド名のつづり間違い(例:Value を Vaiue)
オブジェクトの種類の誤り そのオブジェクトに使えない命令を呼んでいる(例:Workbook に存在しないメソッド)
オブジェクト変数の未設定 Set でシートやブックを入れる前に変数を使っている
参照設定が「参照不可」 外部ライブラリへの参照が壊れ、その命令が認識されない

例1:スペルミス

下のコードは ValueVaiue と打ち間違えています。これだけでエラー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の対処法

次の手順で、上から順に確認していきます。

  1. スペルを確認する:エラーで止まった行の、プロパティ名・メソッド名のつづりを確認します。
  2. オブジェクトとの対応を確認する:その命令が、対象のオブジェクトに本当に使えるものか確認します(単数 Workbook と複数 Workbooks の取り違えなどに注意)。
  3. Set でオブジェクト変数を設定する:変数を使う前に、必ず Set でシートやブックを代入します。
  4. 参照設定を確認する:外部ライブラリを使うコードで438が出るときは、VBEの「ツール」→「参照設定」を開き、先頭に「参照不可」と付いた項目がないか確認します(後述)。

例3は、次のように Set でシートを入れれば直ります。

Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
ws.Cells(1, 1).Value = "データ"

「参照不可(MISSING)」を確認・解除する手順

他のパソコンで作ったマクロを開いたときなどに、参照していた外部ライブラリが見つからず、その命令が一斉にエラー438になることがあります。VBE(Visual Basic Editor)の参照設定で確認します。

  1. Excelで Alt + F11 を押してVBE(Visual Basic Editor)を開きます。
  2. メニューの「ツール」「参照設定」をクリックします。
  3. 一覧の上のほうに、先頭が「参照不可:(MISSING:)」となっている項目がないか確認します。
  4. 不要なら、その項目のチェックを外して「OK」を押します。必要なライブラリなら、正しい場所にあるものへチェックを付け直します。
VBEのツールメニューの参照設定
「実行時エラー438」は参照設定の不整合が原因のことがあります。VBE(Alt+F11)の「ツール」>「参照設定」を開きます。
VBEの参照設定ダイアログのライブラリ一覧
「参照設定」の一覧で、頭に「参照不可(MISSING)」と付いた項目があればチェックを外します。必要なライブラリ(例:Microsoft Excel 16.0 Object Library)にチェックが入っているかも確認します。

よくある質問

Q1:エラー438が出たら、最初に何を確認すべき?

まずエラーで止まった行のプロパティ名・メソッド名のスペルを確認してください。次に、その命令が対象オブジェクトに使えるものかを確認します。外部ライブラリを使うコードなら参照設定の「参照不可」も確認します。

Q2:エラー438とエラー91の違いは?

エラー438は「そのプロパティ/メソッドが存在しない」とき、エラー91は「オブジェクト変数が設定されていない(Set し忘れ)」ときに出ます。Set 忘れのときはエラー91が出ることが多いですが、続く行の書き方によっては438になることもあります。どちらも変数の設定を見直すのが基本です。

まとめ

エラー438は、スペルミス・オブジェクトの種類違い・Set 忘れ・参照不可のいずれかがほとんどです。エラーで止まった行を起点に、上の4点を順番に確認すれば確実に切り分けられます。外部ライブラリを使うマクロで突然出たときは、VBEの「ツール」→「参照設定」の「参照不可」を真っ先に疑ってください。

最終確認日:2026年6月

この記事を書いた人
この記事を書いた人

企業の情報システム部門で10年以上、PC・アカウント・社内ネットワーク・Microsoft 365/Google Workspace運用を担当。年間数百件の問い合わせ対応(PC不調、メール送受信、Excel/Word資料、Teams会議、スマホ連携など)を通じて、初心者がつまずくポイントを「再現→原因切り分け→最短解決」の手順に落とし込んできました

現場や身近で実際に起きたトラブルをベースに、手順だけでなく「なぜそうなるか」「失敗しやすい落とし穴」「安全な設定(セキュリティ)」まで含めて解説します。

相談窓口(問い合わせ/LINE等)を設け、記事で解決しないケースも個別にサポートしていますので「パソコンが急に動かなくなった」「スマホの設定がわからない」などの悩みは一人で抱え込まず、お気軽にご相談ください。

【お問い合わせは下記URLから】
https://m32006400n.xsrv.jp/inquiry-form/

【公式LINEは下記URLから】
https://lin.ee/t8TDjcj

uri uriをフォローする
スポンサーリンク
よかったらシェアしてね! /
uri uriをフォローする

コメント

タイトルとURLをコピーしました