「型が一致しません:配列またはユーザー定義型を指定してください」
動的配列を引数として渡す際、コンパイルエラー「型が一致しません:配列またはユーザー定義型を指定してください」が発生する場合があります。
その場合はVariant型で定義している部分を配列として明示することで回避可能です。
「型が一致しません」が発生するコードと対処方法
'■コンパイルエラーが発生する(型が一致しません:配列またはユーザー定義型を指定してください) Public Sub sample() Dim arr As Variant ReDim arr(2) Call functionSample(arr) End Sub Public Function functionSample(tmp() As Variant) tmp(0) = 0 tmp(1) = 1 tmp(2) = 2 End Function
'■コンパイルエラーが発生しないケース Public Sub sample() '■事前に配列として明示してあげる Dim arr() As Variant ReDim arr(2) Call functionSample1(arr) '■引数側を配列ではなくVariantにしてあげる ' Dim arr As Variant ReDim arr(2) Call functionSample2(arr) End Sub Public Function functionSample1(tmp() As Variant) 'Variant型の配列を引数としている tmp(0) = 0 tmp(1) = 1 tmp(2) = 2 End Function Public Function functionSample2(tmp As Variant) 'Variant型を引数としている tmp(0) = 0 tmp(1) = 1 tmp(2) = 2 End Function
その他
- 本エラーは単純に呼び出し元と呼び出し先のデータ型を合わせるだけの話です。
コメント