在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
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
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货