【发布时间】:2015-01-06 03:23:00
【问题描述】:
这是一个非常理论性的问题,我想了解一下以扩展我对 VBA 语言的理解,但在 official documentation 以及此处和其他论坛以前的问题中没有找到任何内容(也许只是不值得怀疑为什么?)。
如果我写:
MsgBox "myPrompt", vbYesNo, "MyTitle"
它会出现一个带有自定义提示、按钮和标题的消息框。 但是,如果我写这个我会得到一个编译错误(预期的“=”):
MsgBox ("myPrompt", vbYesNo, "MyTitle")
到目前为止,一切都与语法有关。在第二种情况下,我应该将函数的返回值存储到一个变量中,所以我非常同意“=”符号是预期的这一事实。但是,以下行将起作用:
MsgBox("myPrompt")
无论如何它都会返回值1,我只需运行即可看到
a = MsgBox("myPrompt")
MsgBox a
因此,在我看来,MsgBox ("myPrompt", vbYesNo, "MyTitle") 在没有赋值的情况下无法工作的原因似乎不再与编译错误所说的预期变量赋值有关。
有人可以向我解释一下吗?
【问题讨论】:
-
括号向 VBA 表明它是一个函数,应该有一个返回值。如果您不为其提供变量,则会出现错误。如果您只是编写 MsgBox("myPrompt"),则解释器假定为“vbOKOnly”(默认)并将其视为一种方法。就算“忍”了也是不对的。
-
好问题。以前从未注意到这一点。
标签: vba