VBA(Excelマクロ)で「オブジェクトが必要です」というエラーが出る原因と対処法

スポンサードリンク
VBA
オブジェクトが必要です

上図のようなエラー表示が出た場合、原因を理解することで問題無く対処することが可能です。
この記事では、「オブジェクトが必要です」と表示された場合の原因と対処法を、
できるだけわかりやすく解説いたします。

-著者情報-
名前:Utatane
VBA(マクロ)歴:3年
Excel使用歴:15年以上
ひとこと:初心者だった当時に戻った気持ちになって解説いたします

※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。

スポンサードリンク

VBA(Excelマクロ)で「オブジェクトが必要です」というエラーが出る原因と対処法

オブジェクトが必要です

「オブジェクトが必要です」はどんなエラー?

このエラー(実行時エラー424オブジェクトが必要です)は、その名の通り
オブジェクトが必要な場面で、適切なオブジェクトが与えられていない場合に発生します。
ちょっとピンと来ないですよね…。

まずオブジェクトとは、セルやシート、ブックなどが該当します。
これらのオブジェクトを変数に代入する際、発生する可能性があるのがこのエラーです。
なぜこのようなことが起こるのでしょうか?

例えばセルは、書き込みされた値だけではなく、罫線や文字の色・位置などの情報も含んでいます。

セル

いろんな情報が詰まっているために、通常の変数では手に負えません…。
変数が「私の手に負えません…」と言ってきているのがこのエラーです。

通常の変数は、紙一枚のようなものだと思ってください。
オブジェクトは情報が多いため、紙一枚では足りません。
なので「紙一枚じゃ足りないよ!」と怒られているといった感じでしょうか…。

では、このエラーが発生する原因と対処法を見ていきましょう。

「オブジェクトが必要です」と表示される原因と対処法

「Set」の使い忘れ

大半の原因がコレです。
下記のVBAコードを見てください。

Sub オブジェクトが必要です()
  Dim rng As Variant
  rng = Range("A1")

  Debug.Print rng.Value
End Sub

セルを変数に代入し、セルの値を表示しただけのマクロですが、エラーが出ました。

オブジェクトが必要です

原因は「Set」の使い忘れで、正しくは下記の通りとなります。

Sub 解決()
  Dim rng As Variant
  Set rng = Range("A1")

  Debug.Print rng.Value
End Sub

3行目の頭に「Set」が追加されただけです。
これでエラーが解消されました。

紙一枚の変数に「Set」を付けて、ノート一冊に拡張したようなものでしょうか…。
これでオブジェクトの情報も書ききることができます。

「Range(“A1”).Value」というように、セルの値だけを変数に入れる場合は「Set」をつける必要はありません。
ここでSetを付けてしまうと、別のエラーが発生します。

Sub 別のエラー()
  Dim rng As Variant
  Set rng = Range("A1").Value ' 別のエラー

  Debug.Print rng
End Sub
別のエラー

Setを「付ける」or「付けない」は、下記記事をご参考ください。

存在しないコントロールやオブジェクトを参照している

Set以外で代表的なのはコレです。
ユーザーフォームを使ったり、コントロールパーツを操作している場合にありえる原因です。

Sub オブジェクトが必要です()
   UserForm1.TextBox99.Text = "Hello" ' ← TextBox99 は存在しない場合
End Sub

ユーザーフォーム名やコントロール名を再確認してみてください。

これは紙やノート以前に、ウソ(存在しない情報)を書いて怒られてしまったものだと思ってください。

スポンサードリンク

エラーを回避するためのコツ

オブジェクト(セルやシート、ブックなど)を変数に代入する際は、「Set」をつける癖をつけましょう。
オブジェクトを入れる変数名を「rng」など、自分にはわかりやすい名前にするのも有効です。
「rng」→「range」→「セル」→「オブジェクト」→「Setが必要」と芋づる式に思い出すことができ、エラーを回避できます。

そのためにも、「Option Explicit」を有効にしておきましょう。
これで変数の宣言を省略できなくなり、よりエラーが出にくくなります。

スポンサードリンク

最後に

VBA(Excelマクロ)で「オブジェクトが必要です」というエラーが出る原因と対処法を解説いたしました。

当ブログでは、VBAマクロやPythonなど、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。

最後までお読みいただき、ありがとうございました。がんばってください!

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