1

我有一个看起来像这样的子程序。它有两个参数。

Sub Advance(ByRef listR() As String, rCount)
    ...code
End Sub

当我尝试调用它时:

Advance listR:=theList, theCount

它给了我一个编译错误:

预期:命名参数

为什么是这样?它工作得很好,就像......

Sub Advance(rCount)
    ...code
End Sub

并通过以下方式调用:

Advance theCount

或者也可以仅使用数组参数。

4

2 回答 2

3

我相信您可以通过以下任何方式调用您的 sub,但您不能命名第一个参数,也不能命名第二个参数:

Advance listR:=theList, rCount:=theCount
Advance rCount:=theCount, listR:=theList
Advance theList, rCount:=theCount
Advance theList, theCount

Call Advance(listR:=theList, rCount:=theCount)
Call Advance(rCount:=theCount, listR:=theList)
Call Advance(theList, rCount:=theCount)
Call Advance(theList, theCount)
于 2012-05-02T17:15:02.753 回答
2

来自MSDN

当您通过位置和名称的混合提供参数时,位置参数必须全部放在第一位。一旦按名称提供参数,其余参数都必须按名称。

于 2012-05-02T17:26:04.463 回答