実行時バインディング関数にユーザ定義型変数を引き渡す方法

解決


まさお  2004-09-10 23:32:40  No: 85513  IP: [192.*.*.*]

まさお と申します。  宜しくお願いします。
  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 したいのです。

編集 削除
まさお  2004-09-11 00:30:28  No: 85514  IP: [192.*.*.*]

申し訳ありません。

  クラスモジュールを使えばできることが判りました。

編集 削除