在常量声明中使用 vba-常量

Using a vba-constant in Constant declaration

更新

我是个白痴,它不起作用的原因是 & 标志有点接近 vbNewLine。我没有弄清楚,因为我知道 Chr(xx) 不会起作用,所以立即得出结论。
原来是多行声明并没有帮助。 (没有交叉检查我在这里写的代码)

原版Post

所以,我正在尝试声明一个 Const,其中包含我的 class 的描述,描述中将包含一些 line-breaks/new-lines(只是一个新段落) . 稍后将通过 属性 Get 方法返回其值。

我知道在设置常量值时不能使用像 Chr(10)(实际上是 vba.Chr(10))这样的函数调用。

Private Const FOO As String = "Apple" & chr(10) & "Ale"

但显然 VBA-常量如 vbNewLine(实际上是 vba.vbNewLine)也不会起作用。

Private Const FOO As String = "Banana" & vbNewLine & "Beer"

我知道我可以直接在 Property Get 方法中写入文本,但我想将所有信息放在顶部。

我能想到的一个替代方案是实现一个小的字符串格式化程序,用 vbNewLine 替换一个标记,尽管我认为这太过分了。

Private Const FOO As String = "Cucumber {/CrLf} Cerveza"

所以在我继续实施格式化程序之前,我想问一个问题:

有没有简单的方法在 Const declaration/definition 中声明 vbNewLine

没有问题:

Private Const FOO As String = "Banana" & vbNewLine & "Beer"

你遇到了什么错误?

和 Tim Williams 一样,我对使用编译时常量表达式声明常量值没有任何问题。

编辑:

the reason it didn't work was a & sign that got a bit too close to the vbNewLine.

现在这更有意义了 - & 字符用作 字符串连接运算符 当用作运算符时(即 operand1 & operand2, space 两侧)。但它也可用作 type hint 字符,可合法用于数字文字,例如42&Long 文字,而 42Integer 文字。这有点用处,忘记将关键的 space 放在运算符之前是一个相对常见的错误。

应用于像vbNewLine这样的字符串常量,类型提示导致编译错误:"type declaration character does not match declared data type"

下面是原始答案。


I'm trying to declare a Const that holds a description for my class

听起来您好像在重新发明文档字符串。您可以通过对象浏览器访问模块和成员文档字符串,方法是从上下文菜单中选择 properties

弹出的 "Member Options" 对话框让您输入描述:

此描述将在对象浏览器中可见:

IDE 加载项,如 Rubberduck(免责声明:我管理这个开源 VBIDE 加载项项目)可以在项目中显示此文档字符串树视图:

...以及所有引用它的地方:

使用 @ModuleDescription 注释,可以从可见的代码内注释维护自定义模块文档字符串(对成员使用 @Description 注释)。

Docstrings 是一种开发人员工具,它们几乎没有编程价值,如果有的话。