两者都是赋值符,但赋值的对象不同而已。
1. := 是“方法”的内部子参数赋值时使用的。
比如说Find(查找)方法,其语法如下:
1.expression.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)
当我们想在Sheet1中查找“工时”两个字时,可以这样写:
1.Sheet1.Find(What:="工时", LookIn:=xlValues, LookAt:=xlWhole)
这里,Find就是“方法”,相当于主要过程,而括号内的What、After、LookIn、LookAt、MatchCase之类的,就是这个方法的子(内部)参数,当给这些内部参数赋值时,就要用到:=。
当然,上面的语句,如果你按参数的顺序写,然后不赋值的参数用逗号预留占位的话,这些子参数的名称也是可以省略的,也就可以省略:=这个赋值符。
2. =是给变量、对象赋值时使用的。
如 i = 55、Range("A1").Value="Good Morning"、Set Rng = Range("A1")、Set dic = CreateObject("Scripting.Dictionary") 等等。
录制宏里面常会看到这种情况,":="中,":"是跟着前面的一个参数名的。
:= 表示命名参数,例如,下面这个程序有3个参数:
Sub OptionalArgs(strState As String, Optional intRegion As Integer, _
Optional strCountry As String = "USA")
'……………………
End Sub
可以使用命名参数来调用上述程序,如下示例所示:
OptionalArgs strCountry:="USA", strState:="MD"
上面的调用省略了一个参数,而且调用参数时不是定义时的顺序。
如果不用命名参数,就必须用“,”逗号来区分参数的位置,并且顺序不能乱,如下面的调用:
OptionalArgs "MD", ,"CHINA"
-------------
: 其他情况的作用:将一行语句分割成多句
a=1 : b=2 :c=3
等同于:
a=1
b=2
c=3
看了描述怎么感觉是 := 是右值赋值,=是给左值赋值的意思?