2017-05-05 29 views
1

我尝试调用过程给人以参数时,它抛出一个编译错误,指出“预期:=”。编译错误“预期:=”调用另一个程序

... 

Dim isWorkaround As Boolean 
isWorkaround = False 
If Check101.Value = True Then 
    isWorkaround = True 
End If 

... 

'Procedure I try to call 
ElseIf Combo_Report_Selection = "Adjusted Report" And Combo_someOther= "Other" Then 
    Call_01_Adj_Report(div, isWorkaround) 
ElseIf Combo_Report_Selection = "Upload Log" Then 
    Call_03_Upload_Log 
ElseIf Combo_Report_Selection = "Gather Summary" Then 
    Call_04_Adj_Summary 
End If 

Combo_Report_Selection.Value = Null 
Combo_Statement.Value = Null 

End Sub 
__________________________________________ 

Private Sub Call_01_Adj_Report(ByRef calldiv As Long, ByRef isWorkaround As Boolean) 

... 

End Sub 
__________________________________________ 

当我插入呼叫“Call_01_Adj_Report(div,isWorkaround)”时失败。 它只适用于一个参数,但不适用于两个参数。但在我的理解中,使用参数语法的过程调用是正确的。可能是什么问题?

+0

参见[这是混乱的,为什么不总是使用括号?](http://stackoverflow.com/documentation/vba/1179/procedure-calls/3818/this-is-confusing-why-不,刚刚一直使用,括号#T = 201705051655467680223),以了解为什么你需要删除括号那里。您的过程调用语法是* not *权限。 –

回答

3

你的程序调用语法权。

此:Call_01_Adj_Report(div, isWorkaround)

需要是:Call_01_Adj_Report div, isWorkaround

或者,用陈旧显式调用语法:Call Call_01_Adj_Report(div, isWorkaround)

我通常不喜欢显式调用语法颇多,但在这里我就像它突出显示程序名称是多么奇怪一样。避免在公共成员下划线(应该是PascalCase),并用动词,例如启动程序的名称CreateAdjustmentsReport

CreateAdjustmentsReport div, isWorkaround 
0

如果你想保持括号用于调用sub

使用Call关键字

Call Call_01_Adj_Report(div, isWorkaround) 

同样,如果你声明返回值(不SUB)的功能,你可以调用与括号内的功能,而无需使用“呼叫”

例如:

Public Function func(ByVal variable As Integer) 
    variable = variable + 100 
End Function 

Public Sub test() 
    func (10) 
End Sub