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型になっている変数を渡してしまうとエラーになってしまう。
コメント
コメントを投稿