2017-05-05 4 views
1

Ich versuche eine Prozedur aufzurufen, die Argumente angibt, und es wird ein Kompilierfehler mit der Angabe "Erwartet: =" ausgegeben.Kompilierfehler "Erwartet: =" beim Aufrufen einer anderen Prozedur

... 

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 
__________________________________________ 

Es schlägt fehl, wenn ich den Anruf "Call_01_Adj_Report (div, isWorkaround)" ein. Es funktioniert, wenn nur ein Parameter, aber nicht für zwei gegeben wird. Aber in meinem Verständnis ist die Prozedur Aufruf mit Argumenten Syntax richtig. Was könnte das Problem sein?

+0

See [das ist verwirrend, warum nicht immer nur klammern?] (Http://stackoverflow.com/documentation/vba/1179/procedure-calls/3818/this-is-confusing-why- nicht-nur-immer-verwenden-Klammern # t = 201705051655467680223) zu verstehen, warum Sie die Klammern dort entfernen müssen. Ihre Prozeduraufrufsyntax ist * nicht * richtig. –

Antwort

3

Ihre Prozedur Aufrufsyntax ist nicht richtig.

Dies: Call_01_Adj_Report(div, isWorkaround)

Bedürfnisse sein: Call_01_Adj_Report div, isWorkaround

Oder mit dem veralteten expliziten Aufruf Syntax: Call Call_01_Adj_Report(div, isWorkaround)

Ich mag nicht normal expliziten Aufruf Syntax ziemlich viel, aber hier ist wie es hervorhebt, wie seltsam der Prozedurname ist. Vermeiden Sie Unterstriche in öffentlichen Mitgliedern (sollte PascalCase sein), und starten Sie Prozedurnamen mit einem Verb, z. CreateAdjustmentsReport:

CreateAdjustmentsReport div, isWorkaround 
0

Wenn Sie Klammer pflegen wollen für den Aufruf eines sub:

Verwendung Call Stichwort

Call Call_01_Adj_Report(div, isWorkaround) 

Ebenso, wenn Sie eine Funktion deklarieren, den Wert (nicht Sub) zurückgibt, können Sie Rufen Sie die Funktion mit Klammern auf, ohne "Anrufen" zu verwenden

Beispiel:

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

Public Sub test() 
    func (10) 
End Sub 
Verwandte Themen