尝试这个:
Private pSkipTrade As Boolean
Public Property Let SkipTrade(lSkipTrade As Boolean)
pSkipTrade = lSkipTrade
End Property
Property Get SkipTrade() As Boolean
SkipTrade = pSkipTrade
End Property
在您的代码中的其他地方,您正在使用另一个变量(例如value
)来设置此属性。如果此变量不是类型Boolean
(例如,a Long
、、Double
或Decimal
),那么您可以执行以下操作:
Sub Test()
Dim MyObject As Object
Dim Value As Double '## or, whatever
'# CREATE THE CLASS OBJECT
Set MyObject = New cMyObject '## Modify to be your correct Type
Value = Application.InputBox("Enter any number")
'# ASSIGN THE PROPERTY VALUE BASED ON A LOCAL VARIABLE/LOGIC
' use boolean logic to test whether "value = 0"
' a non-zero value will return "True"
MyObject.SkipTrade = Not (CDbl(Value) = 0)
'# Display the value, so you can see that this is working correctly:
MsgBox "The value of SkipTrade is: " & MyObject.SkipTrade
End Sub
如果您有多个条件,最好Function
在对象的属性分配期间使用调用来返回属性值。
您可以调用如下函数:
MyObject.SkipTrade = CheckSkipTrade(value)
在您的主代码模块中使用这样的函数,可以对其进行修改以包含您可能需要合并的任何逻辑:
Function CheckSkipTrade(value) As Boolean
Dim myVal as Boolean
If IsNumeric(value) Then
'returns true or false test whether 'value' = 0.
myVal = Not(CDbl(value) = 0)
Else:
myVal = False
End If
'# Return the value of the function test:
CheckSkipTrade = myVal
End Function
请注意,在上面的示例中,您直接对类对象的SkipTrade
属性进行赋值是非常明确的 - 不是隐藏的?MyObject
相反,您的方法本质上调用隐藏在对象模块中的子例程,该子例程为属性分配值。它有效吗?是的。这是最好的方法吗?我不这么认为;这是一种非常令人困惑的编码方式,这将使以后的故障排除(特别是如果您将此项目交给其他人时)变得更加困难。
显式编码优于隐式编码。