本帖最后由 bcrun 于 2010-06-09 07:17:01 编辑

解决方案 »

  1.   

    是这样子的,我定义了几个类,让后想做一个通用函数,把这几个类接受过来做同样的处理,问题我这几个怎么传过去,如果作为Variant类型传,那么我在函数里如何取得当前传过来的参数类型,然后根据这个再做相应的处理
      

  2.   

    参数类型可用TypeName或VarType判断啊,也可单独加个自己定义的类型编号参数
      

  3.   

    TypeName据说不能用于自定义类型啊,“单独加个自己定义的类型编号参数”如何操作?
      

  4.   

    本帖最后由 bcrun 于 2010-06-09 07:14:31 编辑
      

  5.   

    函数或过程入口参数可以定义为object或variant
    在函数或过程中用只能用typename来判断送过来的对象名然后作相应处理。
    类变量在送往函数或过程前必须用new来实例化成对象,否则typename都返回nothing。
    Private Sub Command1_Click()
    Dim a As New Class1
    Dim b As New Class2
    Dim c As New Class3
       
       tmp a
       tmp b
       tmp c
    End SubPrivate Function tmp(b As Object)
       Select Case LCase(TypeName(b))
           Case "class1"
                 Debug.Print 1
           Case "class2"
                 Debug.Print 2
           Case "class3"
                 Debug.Print 3
       End Select
          
    End Function
      

  6.   


    "TypeName据说不能用于自定义类型"?谁说的呀,当然可以用,只是你要注意,要想把自定义类型数据当参数传递,需要使用activex工程,且把该类型的定义放到公共类中,否则就会报错:
    编译错误:只有定义在公共对象模块中用户定义类型能和变体类型相互转换或传递给后期绑定功能。如在activex exe工程中,这个输出Size:'Form1.frm
    Option ExplicitPrivate Sub Command1_Click()
        Dim vSize As Size
        t1 vSize
    End Sub
    Private Sub t1(para1 As Variant)
        Debug.Print TypeName(para1)
    End Sub'Class1.cls
    Option Explicit
    Public Type Size
        x As Long
        y As Long
    End Type