「型が一致しません:配列またはユーザー定義型を指定してください」
動的配列を引数として渡す際、コンパイルエラー「型が一致しません:配列またはユーザー定義型を指定してください」が発生する場合があります。
その場合は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
その他
- 本エラーは単純に呼び出し元と呼び出し先のデータ型を合わせるだけの話です。



コメント