在VB用户定义的函数中,以Byval传递对象的方法也是传递指针。我希望得到对象的副本,而不是原对象指针的引用。Option Explicit
Private Sub Command1_Click()
Dim objtest1 As New Class1
Dim objtest2 As New Class1objtest1.PenColor = "Red"
MsgBox "objtest1.PenColor =" & objtest1.PenColor
Set objtest2 = objtest1
objtest2.PenColor = "Green"
MsgBox "objtest1.PenColor =" & objtest1.PenColor
MsgBox "objtest2.PenColor =" & objtest2.PenColor
Set objtest2 = Nothing
Set objtest2 = Nothing
End Sub
'Class 1 code Option Explicit
Dim CurrentColor As Integer
Const BLACK = 0, RED = 1, GREEN = 2, BLUE = 3Property Let PenColor(ColorName As String)
   Select Case ColorName   '检查颜色名称字符串。
      Case "Red"
         CurrentColor = RED   '设为 Red。
      Case "Green"
         CurrentColor = GREEN   '设为 Green。
      Case "Blue"
         CurrentColor = BLUE   '设为 Blue。
      Case Else
         CurrentColor = BLACK   '设为缺省值。
   End Select
End Property
Property Get PenColor() As String
   Select Case CurrentColor
      Case RED
         PenColor = "Red"
      Case GREEN
         PenColor = "Green"
      Case BLUE
         PenColor = "Blue"
   End Select
End Property