まさお と申します。 宜しくお願いします。
VB6 SP6 です。
下記のようなコードを記述するとコンパイルエラーになります。
当然です。
*****標準モジュール*****
Type AType
i As Integer
j As Integer
End Type
Sub Test()
Dim A As AType
Call abc(A)
End Sub
Function abc(ByRef vari As Variant)
'<処理>
End Function
「Function abc(ByRef vari As Atype)」としなければなりません。
しかし、エラーダイアログには以下のように記述されています。
『パブリックオブジェクトモジュールで定義されたユーザー定義型に限り、変数に割り当てることができ、実行時バインディングの関数に渡すことができます』
これは「hogehogeで定義されたユーザー定義型の変数は実行時バインディング関数に渡すことができる」、 と読めます。
実行時バインディング関数ですから Function abc(ByRef vari As Atype) ではなく、Function abc(ByRef vari As Variant) です。
この「hogehogeで定義するユーザー定義型」はどうすれば良いのか、に関してアドバイスを戴きたくお願い申し上げます。
PS:
Function abc(ByRef vari As Variant) としたい理由は
Sub Test()
Dim A As AType
Dim L as Long
Call abc(A)
Call abc(L)
End Sub
という具合に各種型変数で abc を Call したいのです。
申し訳ありません。
クラスモジュールを使えばできることが判りました。