VBA这很令人困惑。为什么不总是使用括号?
示例
括号用于包围函数调用的参数。将它们用于过程调用可能会导致意外的问题。
因为它们可能会引入错误,所以在运行时通过向过程传递可能不希望的值,而在编译时仅通过使用无效语法即可。
运行
多余的括号会引入错误。给定一个将对象引用作为参数的过程...
Sub DoSomething(ByRef target As Range) End Sub
...并加上括号:
DoSomething (Application.ActiveCell) 'raises an error at runtime
这将引发“对象必需”运行时错误#424。在其他情况下,可能还会发生其他错误:在这里,Application.ActiveCellRange对象引用正在按值进行评估并通过值传递,而无论过程的签名指定target要传递的值ByRef。上面的代码段中传递ByVal给的实际值为。DoSomethingApplication.ActiveCell.Value
括号强制VBA评估括号表达式的值,并将结果传递ByVal给被调用的过程。当评估结果的类型与过程的预期类型不匹配并且无法隐式转换时,将引发运行时错误。
编译时间
此代码将无法编译:
MsgBox ("无效的代码!", vbCritical)因为("无效的代码!",vbCritical)无法将表达式计算为值。
这样可以编译工作:
MsgBox ("无效的代码!"), (vbCritical)但是肯定看起来很傻。避免多余的括号。
热门推荐
1 泰迪狗狗如何训练
3 狗狗训练图
5 狗狗训练方法
6 训练狗狗不咬人
8 敏捷训练狗狗
10 训练狗狗吃饭
11 泰迪狗狗训练
12 狗狗从多大开始训练
13 狗狗训练学校费用
14 怎么去训练狗狗
15 狗狗训练狗狗
16 狗狗训练教程
17 训练狗狗装死
18 泰迪狗狗的训练方法