自分方位研究所

日々の活動記録

(Excel VBA) コンパイルエラー: ByRef 引数の型が一致しません。

前回作成した配列変数を新たに作成したFunctionプロシージャに引き渡して処理を進めようとしたら、コンパイルエラーが発生しました。ByRef 引数の型が一致しません。と表示されています。

Functionプロシージャ側では、受け取る引数の型がString(文字列型)を指定しているのに、Functionプロシージャを呼び出す側では、Variant型を指定しているためでした。Variant型はなんでもありだと思っていたのですが使い方がまずいとエラーが出るのですね。

f:id:k-emu:20200617165701j:plain

エラーの回避は、Functionプロシージャに引き渡すときに文字列型にすればよいので、CStr関数を用いて、文字列型に変換することにしました。

CStr(数値または数式) で文字列型に変換してくれます。
これでエラーが出なくなりました。

f:id:k-emu:20200617165733j:plain

では、この逆はどうなのだろうとやってみました。

Functionプロシージャ側で、Variant型を引き取る設定にして、引き渡す側ではString型を指定した場合です。

結果はこのとおり、正常に終了しました。

f:id:k-emu:20200617165806j:plain

受け取る側がなんでもOKのVariant型なので、String型の引数を渡しても問題なく処理してくれたのでした。
これで安心。次の工程に進みます。