在 VBA 编译时有条件地设置常量

CJ *_*J K 4 excel vba excel-2010

我想在编译时有条件地设置 const 变量的值。我以为我可以使用 vba 编译器指令 #If #Else 等来实现这一点,如下所示,但到目前为止还没有成功:

#If Environ("username") = "myusername" Then
    Public Const ErrorHandling As Boolean = False
#Else
    Public Const ErrorHandling As Boolean = True
#End If
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,我收到一个错误,指出 Environ 变量未定义。
这样的事情甚至可能吗?或者我是否只需要将我的“ErrorHandling”变量设为公共(而不是 Const),并在我的代码初始化时设置它?

提前致谢,
cjk

Sto*_*rax 5

您只能在条件 if 语句中使用常量。您可以在此处解释的 VBAProject 属性中或在您的代码中设置它。

Sub TestIt()
#Const Errorhandling = False

    #If Errorhandling Then
        Debug.Print "Error on"
    #Else
        Debug.Print "Error off"
    #End If

End Sub
Run Code Online (Sandbox Code Playgroud)

您可以在此处找到更多文档以及有关预定义常量的页面

更新:正如 Comintern 正确指出的那样,我的 statememt only 常量并不完全正确,请参阅语言规范的第 5.6.16.2 节

  • 这不是*严格*正确的。如[语言规范的第 5.6.16.2 节](https://msdn.microsoft.com/en-us/library/ee200188.aspx) 中所述,可以使用一小部分函数。 (4认同)