VBA编译错误,带有非常简单的子宏,期望值=

时间:2019-04-06 11:18:22

标签: vba ms-word

我在Word中有一个小的VBA宏,该宏无法编译为Expected:=错误。由于这些都是子例程,因此我不确定会导致什么。我已尽可能将其简化为下面列出的代码。

Sub test()
    tmp = MsgBox("test")
    test2("tmp2","tmp3") ' this is the line where the compile error appears.

End Sub


Sub test2(test1String As String, test2String As String)
    MsgBox (test1String)
End Sub

我不希望任何简单的事情都会导致分配错误。输入代码,然后尝试运行测试宏。

1 个答案:

答案 0 :(得分:0)

您正在调用Sub,而不是Function。语法

test2("tmp2","tmp3") 

仅使用一个参数调用子test2,即一个(无效的)表达式("tmp2","tmp3")

您应该称呼它为

test2 "tmp2","tmp3"

大括号()会在表达式中转换参数列表。

注意:同样,当在参数列表周围使用花括号调用函数时,需要分配函数结果,否则函数参数也将被视为表达式

i = myFunction(1, 2)     ' valid
myFunction 1, 2          ' valid
myFunction(1, 2)         ' invalid
mySub(1, 2)              ' invalid
mySub 1, 2               ' valid
mySub(1 + 2), (3 + 4)    ' valid!

最后一个示例使用两个自变量调用sub,这两个自变量都是表达式。