带有 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 对象子调用给出编译错误:预期 =的主要内容,如果未能解决你的问题,请参考以下文章

VBA的对象方法属性

从 Excel VBA 运行工作参数化 Access SQL 查询 (INSERT INTO) 时出现“需要对象”错误

VBA基础概念

vba,设置,excel,wps ,页面设置

excel表里的函数range怎么用的

Excel vba 运行时错误 91 对象变量或未设置块