gpt4 book ai didi

vba - 在VBA中区分没有值的double和0的double

转载 作者:行者123 更新时间:2023-12-04 21:58:58 25 4
gpt4 key购买 nike

大家好。

我有一个关于 VBA 和变量初始化的小问题:

我有一个类,有属性(property)

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 而不是 Variant,我想它有一个缺点。它是什么?

谢谢你的帮助 :)

马克西姆

最佳答案

缺点与将变量设为 Double 无关。或 Variant .这与让你的类(class)的胆量暴露在任何想要在他们身上乱七八糟的东西有关。

我建议创建实际属性并使用它们来报告对象的状态。这条线...

Public myVal As Double

...确实 不是 制作 myVal类的一个属性。它给它一个公共(public)的内部成员变量并打破 encapsulation .改为使其成为实际属性(property)。这样,如果需要,您可以拥有报告对象状态的其他属性:

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

关于vba - 在VBA中区分没有值的double和0的double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38746653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com