VBA 引数として渡す変数とその宣言

 以前、VBAを使用してエラーが出たため、検索してみた内容で、

他のプロシージャや関数に引数を渡すときに変数を使用しようとするとエラーが出ることがあるんですが、

Dim で変数を宣言するときに、複数の変数を一つの行で同時に宣言しているとエラーが出ることがあるので、変数はひとつずつ宣言しましょうというのを見た。

当時、何でだよ?とか思ってたんですが、最近調べていたら、

Dim Param1, Param2 As String

のように宣言した場合、String型として宣言されているのは Param2 だけで、Param1は型が宣言されておらず、Variant型になるそうな。

Param1 と Param2 両方を String型として宣言したい場合は、

Dim Param1 As String, Param2 As String

とそれぞれ型を指定してやらないといけなかった。

あ~、このせいで引数に設定したときにエラーが出るんだなぁとおもったけど、引数の型が Variant型だとエラーになるという状況がよくわからず再現できていない。もうちょっと調べてみよう。


1/25 追記

引数を参照渡しの ByRef で設定されているところに、型が違う変数(Variant型含む)を渡すとエラーになる。ライブラリに登録されている メソッド・プロパティは大抵 ByRef に設定されているので、そこに 上記のように Dim Param1, Param2 As String のように宣言してしまって Variant型になっている変数を渡してしまうとエラーになってしまう。

コメント

このブログの人気の投稿

VBAでOutlookメールのフォントを変更する

システムのシャットダウンは既にスケジュールされています