2017-05-05 28 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