只要属性的类型是一个结构,直接赋值就可以了。
比如:form1.font = command1.font

解决方案 »

  1.   

    不行的,我是用的自定义的类和结构,提示错误是必须在公共对象模块中定义的结构才行,我是在模块中用public定义的结构,类的属性也定义成我自定的结构,可就是传递不了
      

  2.   

    可以变通一下,用结构指针传递,在类中如下定义
    Private Type MyUDT
      Param1 As String
      Param2 As String
      Param3 As String
      Param4 As Long
      Param5 As Long
    End TypePrivate Declare Sub CopyMemory Lib "kernel32" _
      Alias "RtlMoveMemory" _
      (pDst As Any, _
       pSrc As Any, _
       ByVal ByteLen As Long)Private mudtTest As MyUDTPublic Property Get pUDT() As Long
        pUDT = VarPtr(pUDT)
    End PropertyPublic Property Let pUDT(ByVal vData As Long)
       CopyMemory ByVal mudtTest, ByVal vData, ByVal LenB(mudtTest)
    End Property如下调用
    Private Type MyUDT
      Param1 As String
      Param2 As String
      Param3 As String
      Param4 As Long
      Param5 As Long
    End Type
    Private Sub Command1_Click()
        Dim xyz As MyUDT, cTest As New Class1
        With xyz
          .Param1 = "成员 Param1"
          .Param2 = "成员 Param2"
          .Param3 = "成员 Param3"
          .Param4 = 1312
          .Param5 = 18123
       End With
       cTest.pUDT = VarPtr(xyz)
    End Sub
      

  3.   

    公共类只有在写com组件时才有,普通程序是没有的。
      

  4.   

    Option ExplicitPublic A As String
    Public B As Long
    Public C As Integer类2,代替自定义类型。Option Explicit
    Dim mABC As New Class2Public Property Get ABC() As Class2
      Set ABC = mABC
    End PropertyPublic Property Let ABC(ByVal vNewValue As Class2)
      Set mABC = vNewValue
    End Property
    '你的类。