2017-05-05 5 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)」という呼び出しを挿入すると失敗します。 パラメータを1つだけ与えるときには動作しますが、2つでは動作しません。しかし、私の理解では、引数の構文を使った手続き呼び出しは正しいです。何が問題なのでしょうか?

+0

参照[これはちょうど、常に括弧を使用しない理由は、混乱しているのですか?](http://stackoverflow.com/documentation/vba/1179/procedure-calls/3818/this-is-confusing-why- not-just-always-use-parentheses#t = 201705051655467680223)を使用して、かっこを削除する必要がある理由を理解してください。プロシージャの呼び出し構文は* not * rightです。 –

答えて

3

あなたのプロシージャ・コールの構文はない権利です。

この:Call_01_Adj_Report(div, isWorkaround)

ニーズがあることを:Call_01_Adj_Report div, isWorkaround

または、時代遅れ明示的な呼び出しと構文:Call Call_01_Adj_Report(div, isWorkaround)

私は通常、非常に多くの明示的な呼び出し構文を嫌うが、ここでIプロシージャ名がどれほど奇妙であるかをどのように強調表示するかのように。パブリックメンバーのアンダースコアは避けてください(PascalCase)。プロシージャ名を動詞で始めます。 CreateAdjustmentsReport

CreateAdjustmentsReport div, isWorkaround 
0

あなたがsubを呼び出すための括弧を維持したい場合:

使用Callキーワード同様

Call Call_01_Adj_Report(div, isWorkaround) 

あなたが値を返す関数(ないサブ)を宣言した場合、あなたができます「コール」を使用せずに括弧で関数を呼び出す

例:

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

Public Sub test() 
    func (10) 
End Sub