因为你还没有赋值,你只是声明了自定义类型。应该这样:
Public Type user
    strUserName As String
    strPassWord As String
End TypePublic Sub Main()Dim a As user
  with a 
    .strUserName = "hello"
    .strPassWord = "world"
  end with
  test a
End SubPublic Sub test(a As Variant)
    MsgBox a.strUserName
End Sub

解决方案 »

  1.   

    public sub test(Newvalue as string)
        a.strusername=newvalue
        msgbox a.strusername
    end sub
      

  2.   

    对不起,写错了,应该这样:Public Type user
        strUserName As String
        strPassWord As String
    End TypePublic Sub Main()Dim a As user
      With a
        .strUserName = "hello"
        .strPassWord = "world"
      End With
      test a
    End SubPublic Sub test(a As user)
        MsgBox a.strUserName
    End Sub
      

  3.   

    如果要做到后期绑定,应该使用ActiveX DLL,请到下面地址下载给你一个满意的例子:http://caotang.myeytang.com/temp/postbinding.zip
      

  4.   

    我最想实现的就是,要实现数据类型后期绑定
    public sub test(a as variant)
    end sub
    参数的类型在设计期是不知道的
      

  5.   

    新建一个ActiveX DLL工程,在class1下面添加如下代码:Public Type user
        strUserName As String
        strPassWord As String
    End Type添加一个标准Exe工程,添加一个module,引用新建的ActiveX DLL工程,代码如下:
    Option Explicit
    Public Sub Main()    Dim o_udtUser As user
        
        With o_udtUser
            .strUserName = "hello"
            .strPassWord = "world"
        End With
        
        test o_udtUser
      
    End Sub
    Public Sub test(ByVal udtBinding As Variant)
        
        MsgBox udtBinding.strUserNameEnd Sub
      

  6.   

    请再次访问,现在应该可以下载了。如果不可以,请留下email,我发给你。
      

  7.   

    对不起,网址错了,应该是这样:http://caotang.myetang.com/temp/postbinding.zip
      

  8.   

    还是不行,[email protected]
    谢谢!!