下のような、関数にRangeオブジェクト送る関数書いて実行しようとしたら
「実行時エラー’424′: オブジェクトが必要です。」
と言われて実行できなかった。
Sub Macro1() Dim a As Range Set a = Range("A1") Test(a) End Sub Function Test(a As Range) a.Cells(1, 1) = 5 End Function
調べると、Setで変数を指定してないと出るエラーだとか、よく出るんだけど、
Set a = Range(“A1”)
とは記載している。
結論から言うと、Function Testの戻り値を受けるオブジェクトがいないことに対してエラーを出していたようだ。
Dim m m = Test(a)
と、元の4行目で、適当に戻り値を受けるようにしたら走るようになりました。。。
Functionは、戻り値を明示的に返さなくても走るが、受け側は必要なのが解せない。。。
因みに、Subでなく、functionで定義してる関数ですが、call Test(a)でもエラー無く走ったので、戻り値必要ないなら、callしろということみたいです。
コメント