gpt4 book ai didi

vba - VBA方法中 `:=`语法的含义

转载 作者:行者123 更新时间:2023-12-03 08:01:40 26 4
gpt4 key购买 nike

编写以下VBA时,鉴于我们正在使用Format:=2,因此错误“Expected =“的根本原因是什么?
Workbook.Open (filename, Format:=2)
我知道在按以下代码设置变量时,这种格式可以工作,但是为什么在这里而不是上面的格式下可以工作呢?
Set wrkb = Workbook.Open (filename, Format:=2)
另外,此运算符称为:=,它的用法是什么?

最佳答案

它不是运算符,而是一个命名参数。

您可以通过直接指定参数/参数的顺序来选择它们的顺序。

命名参数的概念也存在于多种现代语言中,例如C#(它是可选的,就像在VBA中一样)和swift(默认情况下是必需的,但您可以将其禁用)。

命名参数还允许您完全省略可选参数,但可以传递参数列表中更远的参数。尝试使用命名参数的好方法是消息框,因为它具有许多带有默认值的可选参数。

示例:MsgBox仅指定标题:

MsgBox Title:="wew lad"

或者,以更现代的方式编写vb(a)代码:
Call MsgBox(Title:="wew lad")

MsgBox是一个很好的示例,因为您可以正常调用它,然后直接向后指定一个参数(也可以与其他方法一起使用):
 Call MsgBox("Yes!", Title:="wew lad")

一旦有了命名参数,就不能在以下位置添加有序参数:
'Call MsgBox (Prompt:="Yes!", vbOkCancel  Title:="wew lad")
'this doesnt work!

现在,为什么会引发错误:
MsgBox ("Hello", Title:="test")

这是vba的一些怪异部分。调用带有返回值的函数,但在使用 括号时忽略该值有点破损。

您可以通过在其前面添加 Call来避免此情况(vba知道它可以忽略结果)。

看起来像这样:
Call MsgBox ("Hello", Title:="test")

老实说,我不知道为什么会这样,但是我已经造成了真正的怪异错误。当您使用括号语法时,我真的可以建议在方法调用之前使用 Call关键字。

如Macro Man所述,您也可以省略括号,而不是使用 Call:
MsgBox "Hello", Title:="test"

它也将起作用。这是原始的vba编码风格,不再使用了。

关于vba - VBA方法中 `:=`语法的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39265111/

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