带有 2 个对象参数的 Excel VBA 对象子调用给出编译错误:预期 =
Posted
技术标签:
【中文标题】带有 2 个对象参数的 Excel VBA 对象子调用给出编译错误:预期 =【英文标题】:Excel VBA object sub call with 2 object parameters gives compile error: expected = 【发布时间】:2014-04-10 06:20:15 【问题描述】:我在 Microsoft excel vba 中调用对象的子例程。 sub 有 2 个参数,都是对象本身。我输入的代码行给出了错误-> 编译错误:预期 =
这是它出现的代码部分:
' Copy the info from the old sheet and paste into the new sheet
Dim employee as CEmployee
For i = 2 To eswbMaxRow
Set employee = New CEmployee
employee.setNames (eswb.Worksheets("Employee Info").Cells(i, wbColumns.infoNameCol).value)
employee.loadFromAnotherWorkbook(eswb,wbcolumns) ' <- This line is giving the compile error
Next I
我不明白这是为什么。这段代码与我已经拥有的代码类似。
这段代码完美运行(注意:这是一个单独的函数):
With ThisWorkbook.Worksheets(sheet)
Do While (.Cells(i, 1).value <> Empty)
' Create an object and set the name property
Set employee = New CEmployee
employee.setNames (.Cells(i, 1).value)
employee.loadFromScratch ' <- This sub is nearly identical to the one that is causing the problem. The only difference is it doesn't take object parameters
i = i + 1
Loop
End With
这就是我如何声明我正在调用的子例程,它给出了编译错误:
Public Sub loadFromAnotherWorkbook(ByVal wb As Workbook, ByVal wbColumns As CColumns)
我传入这个 sub 的对象是正确的类型。
这不是一个函数,所以我不明白为什么我需要使用等号。有谁知道我做错了什么?
【问题讨论】:
VBA returning error when calling a Sub with multiple parameters的可能重复 【参考方案1】:调用Sub
时,不要将参数括在括号中
这样使用
employee.loadFromAnotherWorkbook eswb, wbcolumns
【讨论】:
谢谢!这摆脱了错误。不过这很奇怪,因为我总是将子参数括在括号中,而且我以前从未遇到过问题。 @jason247 如果您使用Call
,您可以在调用子时使用方括号 - 请参阅我在上面发布的链接,其中提出了相同的问题。
你也可以使用Call MySub(params, params...)
以上是关于带有 2 个对象参数的 Excel VBA 对象子调用给出编译错误:预期 =的主要内容,如果未能解决你的问题,请参考以下文章