这是一个非常理论化的问题,我想学习如何扩展我对VBA语言的理解,但是在official documentation中没有找到任何内容,也没有在此处和其他论坛中找到先前的问题(也许它不是值得怀疑的原因?)。
如果我写:
MsgBox "myPrompt", vbYesNo, "MyTitle"
它出现了一个带有自定义提示,按钮和标题的消息框。 但是,如果我写这个,我得到一个编译错误(预期“=”):
MsgBox ("myPrompt", vbYesNo, "MyTitle")
直到现在,它都是关于语法的。在第二种情况下,我应该将函数的返回值存储到变量中,所以我非常同意“=”符号是预期的。但是,以下行将起作用:
MsgBox("myPrompt")
无论如何返回值1
,我只需运行
a = MsgBox("myPrompt")
MsgBox a
因此,根据我的说法,MsgBox ("myPrompt", vbYesNo, "MyTitle")
在没有赋值的情况下不起作用的原因似乎不再存在,应该与编译错误所说的预期变量赋值有关。
有人可以向我解释这个吗,拜托?
答案 0 :(得分:3)
在很高的层面上,它与编译器如何解释命令有关。
如你所述,这两项工作都是:
MsgBox "Hello World"
MsgBox ("Hello World")
但这不会(没有分配变量):
MsgBox ("Hello World", vbYesNo, "Title")
这是因为(没有赋值),VB认为有一个参数值"Hello World", vbYesNo, "Title"
。显然,这是不正确的,你得到一个友好的错误信息。
如果您尝试这样做,它会起作用。
MsgBox ("Hello World"), (vbYesNo), ("Title")
因为每个参数都在它自己的括号中提供。
从语法上讲,这与上面的MsgBox ("Hello World")
语句完全相同。您只需在括号中指定每个参数,而不是仅指定一个参数。
修改强>
MsgBox ("hello world")
有效,因为它会忽略括号,就像使用简单的整数赋值一样,例如x = (2)
。