在VBA-excel中将Boolean设置为null/Nothing/empty等有没有办法做到这一点?

Dav*_*vid 0 excel vba boolean excel-vba

我找不到将var(Boolean)设置为空/ Null或其他平台的方法然后True/False有没有办法告诉VB这个内存单元不会被使用?

Com*_*ern 7

Variant不可以Null.不能设置的内在类型.如果需要可以为空的值,则需要将其声明为Variant:

Sub Foo()
    Dim x As Variant
    x = Null
    Debug.Print x
End Sub
Run Code Online (Sandbox Code Playgroud)

这种方法的第一个缺点是你需要Null在代码中的任何地方测试变量,然后再尝试将变量分配给任何需要的任何过程Boolean.否则,您将获得"无效使用Null"运行时错误.

第二个缺点是你现在正在使用一个弱类型变量,这种变量无法将其声明为一个变量Boolean.如果你真的需要一个代表的类型True,False或者Neither,一个选项是声明你自己的枚举并使用它:

Private Enum Truthiness
    IsTrue
    IsFalse
    IsNeither
End Enum
Run Code Online (Sandbox Code Playgroud)

更好的方法是以确保Boolean变量实际表示二进制条件的方式重构代码.