Excel VBA将参数传递给方法vs中的参数:=

Excel VBA将参数传递给方法vs中的参数:=,excel,vba,function,methods,arguments,Excel,Vba,Function,Methods,Arguments,我学习了java和C,现在我正在尝试学习VBA for excel,但对于将参数传递给VBA方法,我有点困惑 当我们在C中传递参数时,我们会: 但在vba中,当我使用record宏学习时,它给了我这一行 ActiveWorkbook.Names.Add Name:=“NewName”,referestor1C1:=“Sheet1!C8” 如果我试图在没有记录功能的情况下使用方法Add,我会键入 ActiveWorkbook.Names.Add(“NewName”,“Sheet1!C8”) 让我

我学习了java和C,现在我正在尝试学习VBA for excel,但对于将参数传递给VBA方法,我有点困惑

当我们在C中传递参数时,我们会:

但在vba中,当我使用record宏学习时,它给了我这一行

ActiveWorkbook.Names.Add Name:=“NewName”,referestor1C1:=“Sheet1!C8”

如果我试图在没有记录功能的情况下使用方法
Add
,我会键入

ActiveWorkbook.Names.Add(“NewName”,“Sheet1!C8”)

让我困惑的是,有时我们像java/C一样将参数传递给方法,例如:

单元格(Rows.count,1)

那么我们什么时候使用
:=
,什么时候像在java/C中那样传递参数


谢谢

如果您按顺序传递所有必需的参数,则不需要命名参数(java/C样式)。如果跳过可选参数(依赖于它们的默认值)或按声明顺序传递参数,则需要命名这些参数

要使用和说明这一点,请执行以下操作:

变暗r为长,c为长
r=5
c=8
'有序单元格参数,地址中的前2个参数从默认值更改

调试。打印单元格(r,c)。地址(0,0)'o这太完美了!当我搜索Hanks时,我找不到这篇文章,现在有意义了编辑:我在microsoft.com上试用了一个例子:
subpassargs(strName为字符串,intAge为整数,dteberth为日期)Debug.Print strName,intAge,dteberth End Sub
PassArgs(“Mary”,29,#2/21/1969#)
“这给了我一个错误”,但是,如果我做了
PassArgs“Mary”,29、#2/21/1969#
PassArgs strName:=“Mary”,intAge:=29,dteberth:=“2/21/1969”
都可以
void Foo(int i)
{
    // Do things
}

void Bar()
{
    int temp = 1;
    Foo(temp);
}
Dim r As Long, c As Long
r = 5
c = 8
'ordered Cells args, first 2 args in Address changes from defaults
Debug.Print Cells(r, c).Address(0, 0)    '<~~ H5
'out-of-order Cells args
Debug.Print Cells(Columnindex:=c, RowIndex:=r).Address(0, 0)    '<~~ still H5
'out-of-order Cells args and only the 4th arg for .Address
Debug.Print Cells(Columnindex:=c, RowIndex:=r).Address(external:=True)    '<~~ [Book2]Sheet3!$H$5