在VBA中判别double值是否为0,加倍是0
祝大家好日子。
我有一个关于VBA的小问题,以及variables初始化:
我有一个class,有财产
Public myVal As Double
这两个脚本:
Dim myObject As new MyClass myObject.myClass = 0 Debug.Print myObject.myClass Dim myObject As new MyClass Debug.Print myObject.myClass
给出相同的输出:0。
有没有办法告诉两个零(值已分配为0 – 没有分配的值,所以输出为0默认情况下)分开?
旁边的问题:如果我宣布为
Public myVal As Variant
我没有问题,因为我可以使用IsEmpty(myClass.myVal)。
由于人们通常喜欢使用Double over Variant,所以我认为它有一个缺点。 它是什么?
谢谢你的帮助 :)
马克西姆
这个缺点与把variables变成Double
或Variant
无关。 这与揭露你的class级的胆量与任何想要在他们周围肆虐的东西有关。
我build议创build实际的属性,并使用这些来报告你的对象的状态。 这条线…
Public myVal As Double
…不会使myVal
成为该类的一个属性。 它给它一个公共的内部成员variables,并打破封装 。 使它成为一个实际的属性。 这样,你可以有其他的属性来报告对象的状态,如果需要的话:
MyClass.cls:
Option Explicit Private mInit As Boolean Private mVal As Double Public Property Get DoubleValue() As Double DoubleValue = mVal End Property Public Property Let DoubleValue(inValue As Double) mInit = True mVal = inValue End Property Public Property Get Initialized() As Boolean Initialized = mInit End Property
调用代码:
Dim myObject As New MyClass myObject.DoubleValue = 0 Debug.Print myObject.DoubleValue '0 Debug.Print myObject.Initialized 'True Dim myOtherObject As New MyClass Debug.Print myOtherObject.DoubleValue '0 Debug.Print myOtherObject.Initialized 'False