VBA调用多参数子程序报Compile Error: Expected = 解决方案问询
错误原因
该编译错误由VBA的Sub过程调用语法规则导致:
- 调用无返回值的
Sub子程序时,如果不使用Call关键字,禁止将整个参数列表用括号包裹。 - 你之前单参数场景
Check1(4)能正常运行属于特殊情况:此时VBA会将(4)识别为单个表达式先求值再传入,而非将括号作为参数列表的包裹标识,当参数超过1个时,括号内的多参数无法被识别为单个合法表达式,因此触发编译错误。
两种正确调用多参数Sub的方式
方式1:不使用Call关键字,去掉参数外层括号
Sub Check2(x As Integer, y As Integer) Debug.Print x & y End Sub Sub Play2() Check2 4, 3 End Sub ' 输出结果:43
方式2:搭配Call关键字,保留参数外层括号
如果习惯用括号包裹参数列表,只需在调用前加Call关键字即可:
Sub Check2(x As Integer, y As Integer) Debug.Print x & y End Sub Sub Play2() Call Check2(4, 3) End Sub ' 输出结果:43
补充说明
如果是调用有返回值的Function函数,当你需要接收返回值时,必须用括号包裹参数列表,例如res = MyFunction(1, 2);如果不需要接收返回值直接调用Function,语法规则和Sub一致。
内容的提问来源于stack exchange,提问作者Bhavesh Shaha
相关产品推荐
相关产品推荐

