VBA多参数函数调用语法错误

Zac*_*c B 4 excel vba excel-vba

我正在尝试在Excel VBA(2007)中调用函数,并且在调用时收到语法错误.我有一个名为ImportSets的数据结构数组,它包含工作表和字符串,我试图将该数组中的项目成员传递给一个名为Import的函数.

调用代码如下所示:

For n = 1 To 7  
    Debug.Print ("Destsheet: " & ImportSets(n).DestSheet.name)  
    Debug.Print ("Sourcesheet: " & ImportSets(n).SourceSheet.name)  
    Debug.Print ("Sourcecolumn: " & ImportSets(n).SourceColumn)  
    Import(CostAnalysisWorksheet.Sheets("Reimbursements"), ImportSets(n).DestSheet, ImportSets(n).SourceSheet, ImportSets(n).SourceColumn)  
Next n  
Run Code Online (Sandbox Code Playgroud)

所有Debug.Print语句都返回有意义且正确的字符串,并检查"Reimbursements"是否存在返回true.方法调用在一行上.这是ImportSet对象代码:

Public Type ImportSet
    DestSheet As Worksheet
    SourceSheet As Worksheet
    SourceColumn As String
    ...other code...
End Type
Run Code Online (Sandbox Code Playgroud)

函数体看起来像这样:

Function Import(ByRef ReimbursementSheet As Worksheet, ByRef DestSheet As Worksheet, ByRef ImportSheet As Worksheet, ByRef ImportSheetPriceColumn As String) As String  
    ....code here .....  
End Function
Run Code Online (Sandbox Code Playgroud)

我在函数调用中遇到了红色突出显示的语法错误(在第一个代码段中).我可能错过了一些愚蠢的东西.它是什么?

nem*_*mmy 7

我没有在Excel 2007中使用过VBA,但是如果要将返回值赋给变量,旧版本只允许在函数调用参数周围加上括号.试试这个:

Import CostAnalysisWorksheet.Sheets("Reimbursements"), ImportSets(n).DestSheet, ImportSets(n).SourceSheet, ImportSets(n).SourceColumn
Run Code Online (Sandbox Code Playgroud)

  • 在我看来,这是VBA的有线语法,要在参数前使用括号,您必须在过程前使用"调用",或者使用赋值功能.这是如此残酷的惊喜! (2认同)