エラー内容

VBAの実行時に「実行時エラー ‘424’: オブジェクトが必要です。」というエラーになることがあります。

対象のオブジェクトのプロパティやメソッドを使おうとした際に、そのオブジェクトがEmptyだった場合に発生します。

構文エラーのためコードの修正が必要です。

エラーの原因

クラスのプロパティやメソッドは、その親となるオブジェクトが認識できないと動作できません。

Variant型の変数に対してクラス変数が設定されていないことが原因で、多くの場合は変数へのコピー時のSetステートメントの付け忘れが原因です。

オブジェクトを変数にコピーするにはSetステートメントを使う必要があるのですが、Setを書かずにただの代入になっている場合にこのエラーが発生します。

なお、Variant型の場合はエラー424になりますが、Object型変数でSetを付け忘れた場合はエラー91になります。

以下はエラー424が発生するコードです。

5行目でA1セルを変数にコピーしているように見えますが、実際はそうなっていません。

Setがないため変数への代入とみなされ、Rangeオブジェクトでプロパティが指定されていない場合はValueプロパティであるString型の文字列が代入されます。

そのため、5行目は以下のコードと同じ意味になります。

 

エラーの対応方法

上記のコードのようにセルを代入したい場合や、そのほかにもワークシートやブックなどのオブジェクトを変数にコピーする場合はSetステートメントを使わなければなりません。

以下のコードの7行目が正しく修正したコードになります。