在常量声明中使用 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
文字,而 42
是 Integer
文字。这有点用处,忘记将关键的 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 是一种开发人员工具,它们几乎没有编程价值,如果有的话。
更新
我是个白痴,它不起作用的原因是 &
标志有点接近 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 thevbNewLine
.
现在这更有意义了 - &
字符用作 字符串连接运算符 当用作运算符时(即 operand1 & operand2
, space 两侧)。但它也可用作 type hint 字符,可合法用于数字文字,例如42&
是 Long
文字,而 42
是 Integer
文字。这有点用处,忘记将关键的 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 是一种开发人员工具,它们几乎没有编程价值,如果有的话。