在Excel VBA中,:= 和 = 有什么区别?

8

我一直在使用Excel,但我从未了解这两个运算符“(无论我是否都使用过)”在Excel VBA中的区别。 :==


5
我不会将 ":=" 称为 "运算符" - 它更像是一个 "命名参数说明符号"。 - Comintern
call function (argument:=value) say all arguments are optional, and there are 10, you want to pass the 5th by name, then variable setting such as and let variable=x - Nathan_Sav
2个回答

12

正如你已经知道的那样,=用于分配值或设置对象,例如i=1

另一方面,:=(就像Comintern提到的那样)用于给某个命名参数赋值,在我的理解中,只在方法或函数内使用。

考虑以下示例:您可以使用类似MsgBox“Hello World”,,“Title1”的东西 - 在默认顺序下指定MsgBox的参数 - prompt、默认的Buttons-style,然后是Title

或者,您可以使用:=编写MsgBox Title:="Title1", prompt:="Hello world"

注意:

  • 这里参数的顺序不重要

  • 没有必要为默认参数指定空占位符, ,


5
“=”也被用作布尔运算符,这就是为什么不要意外使用“=”而应该使用“:=”的重要原因——例如,“MsgBox Title =“Title1”,prompt =“Hello world””如果没有使用“Option Explicit”,可能会等同于“MsgBox False,False”。 - YowE3K

4
让我们以Range.Find 方法为例。
表达式。Find(What,After,LookIn,LookAt,SearchOrder,SearchDirection,MatchCase,MatchByte,SearchFormat)
那是非常多的条件要设置!但您只想在 Range("A1:A500")中简单搜索数字 2
没有使用:=运算符,您必须使用逗号来获取任何可选变量进行设置:
Range("A1:A500").Find(2, , xlValue, , , , , , )

通过使用:=操作符,您可以指定要使用的条件而不需要逐个遍历所有默认设置:

Range("A1:A500").Find(what:=2, lookin:=xlValues)

Range.Find 的唯一必需参数是 What;并不是说你需要指定所有参数 - 你需要指定所有参数你没有提供值的 - Mathieu Guindon
@Mat'sMug澄清了,您必须使用逗号来通过可选值。 - Chrismas007
1
仅仅是指出,在上面的例子中,这个也可以像上面的例子一样运行:Range("A1:A500").Find 2,, xlValues。哪一个看起来更整洁是一个主观问题。如果目标是减少按键次数,甚至这个也能够实现相同的功能:[A1:A500].Find 2,,-4163。此外,如果函数不返回值,括号是可选的(例如 MsgBox "Hi"),如果所有其它参数都是空白和/或默认值,则无需包含逗号(即 …xlValue, , , , , , = …xlValue)。 - ashleedawg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接