VBA エラー 424「オブジェクトが必要です。」の原因と対処方法

VBAを実行するとVBA エラー 424「オブジェクトが必要です。」を見る機会はないでしょうか。

コードをみても誤った箇所がわからず途方に暮れる場合もあるかと思います。

そんな中で悩むことは、

・VBA エラー 424「オブジェクトが必要です。」の原因はなに?
・VBA エラー 424「オブジェクトが必要です。」の対処はどうすればよい?

ではないでしょうか?

今回は、
VBA エラー 424「オブジェクトが必要です。」の原因とサクっとできる対処方法について
まとめます!



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

VBA エラー 424「オブジェクトが必要です。」はVariant型に指定した、もしくは型指定をしない変数に対して、

オブジェクトを設定せずに、オブジェクトに定義されているプロパティやメソッドを使用した時に発生するエラーです。



VBA エラー 424の原因①「Variant型の変数に対してオブジェクトが設定されていない」

VBA エラー 424の原因はVariant型の変数に対してオブジェクトが設定されていないことが原因となります。

そもそも、Variant型とはどんな内容なんでしょうか?

“variant”は直訳すると「多様な」という意味になり、

VBAではその意味のとおりどんな型でも扱える万能型として扱われます。

ある時はString型の文字列、またある時は配列だったりと七変化するわけです。

タカヒロ
タカヒロ
まあ、VBAならではのゆるい型ですね。。

型はどのタイミングの何で決められるかというと、代入した値の形式とプロパティやメソッドの組み合わせにより決定されます。

今回はオブジェクトに関連するエラーですので、

オブジェクトに定義されているプロパティやメソッドを指定したタイミングでオブジェクト型と判断され、

「オブジェクトのプロパティやメソッドを使いたい事もわかった。」
「けど、肝心のオブジェクトがないよ」

と言われているわけですね。

ではエラーを再現してみましょう。

Sub エラーテスト1a()

    Dim ObjTest As Variant
    ObjTest = ThisWorkbook.Worksheets("Sheet1").Cells(1, 1)
    ObjTest.Value = "test"
    
End Sub

VBAを実行するとエラーとなりましたね。

まず、変数をVariant型で指定します。
Dim ObjTest As Variant

次にセル(1, 1)を変数ObjTestへ代入します。
ObjTest = ThisWorkbook.Worksheets("Sheet1").Cells(1, 1)

次にValueプロパティで値を代入しようとしていますが、文字列格納の変数に対して、
オブジェクトのプロパティを使おうとしているから、ミスマッチとなりエラーが発生するわけです。

ObjTest.Value = "test"

なお、Variant型は省略が可能で、型なしの宣言をすると自動的にVariant型となります。

以下VBAでも同様のエラーが発生します。
おそらくこちらのパターンが多いのではないでしょうか。

Sub エラーテスト1b()

    Dim ObjTest
    ObjTest = ThisWorkbook.Worksheets("Sheet1").Cells(1, 1)
    ObjTest.Value = "test"
    
End Sub

 
 

VBA エラー 424の原因①「Variant型の変数に対してクラス変数が設定されていない」の対処方法はオブジェクトのプロパティとメソッドを使う場合はSetステートメントを使う

VBA エラー 424の対処方法は、オブジェクトのプロパティとメソッドを使う場合はSetステートメントを使うようにしましょう。

Variant型指定あり

Sub エラーテスト1a()

    Dim ObjTest As Variant
    Set ObjTest = ThisWorkbook.Worksheets("Sheet1").Cells(1, 1)
    ObjTest.Value = "test"
    
End Sub

Variant型指定なし

Sub エラーテスト1b()

    Dim ObjTest
    Set ObjTest = ThisWorkbook.Worksheets("Sheet1").Cells(1, 1)
    ObjTest.Value = "test"
    
End Sub

Setを入れるだけですのでかんたんですね。



さいごに

今回は、
VBA エラー 424「オブジェクトが必要です。」の原因とサクっとできる対処方法について
まとめました。

VBAのエラーはパターンを知っておくと発生した時に慌てず対応することができますので、

しっかりと対処方法を把握するようにしておきたいですね!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です