gpt4 book ai didi

vba - MsgBox () - 为什么它对一个参数有效,对多个参数无效?

转载 作者:行者123 更新时间:2023-12-04 22:15:46 25 4
gpt4 key购买 nike

这是一个非常理论性的问题,我想了解一下以扩展我对VBA语言的理解,但在official documentation中没有找到任何内容。也没有在这里和其他论坛上以前的问题(也许只是不值得想知道为什么?)。

如果我写:

MsgBox "myPrompt", vbYesNo, "MyTitle"

它会出现一个带有自定义提示、按钮和标题的消息框。但是,如果我这样写,我会得到一个编译错误(预期为“=”):

MsgBox ("myPrompt", vbYesNo, "MyTitle")

到目前为止,一切都与语法有关。在第二种情况下,我应该将函数的返回值存储到一个变量中,所以我非常同意“=”符号是预期的事实。但是,以下行将起作用:

MsgBox("myPrompt")

无论如何它都会返回值 1,我可以通过简单的运行看到它

a = MsgBox("myPrompt")
MsgBox a

因此,在我看来,MsgBox ("myPrompt", vbYesNo, "MyTitle") 在没有赋值的情况下不起作用的原因似乎不再与以下事实有关正如编译错误所说,预计会进行变量分配。请问有人可以向我解释一下吗?

最佳答案

在非常高的层次上,它与编译器如何解释命令有关。

如您所述,这两种方法都有效:

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)

关于vba - MsgBox () - 为什么它对一个参数有效,对多个参数无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27785327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com