2012-05-07 79 views
1

我使用VBA爲Microsoft Excel 2007年我的代碼如下:VBA:IF語句中的意外行爲。

Sub First() 

End Sub 

Function Two() As Boolean 

End Function 

Sub Sun() 
    If (Two()) Then 
     First() 
    End If 
End Sub 

什麼是錯的代碼?爲什麼不編譯?

我不能在IF聲明中使用subs?這是VBA的magic嗎?我該如何解決這個問題?

回答

3

嘗試從呼叫中刪除括號First

Sub First() 

End Sub 

Function Two() As Boolean 

End Function 

Sub Sun() 
    If (Two()) Then 
     First 
    End If 
End Sub 
+0

謝謝!如果'First(arg as Variant)'我必須寫'First arg',是嗎? – gaussblurinc

+2

@loldop - 我認爲是。 VBA有一些奇怪的爭論要求。如果子/函數返回一個值,並且該值被放置在一個變量中,則括號是必需的。如果沒有返回值,則必須省略括號。 – ken

+3

這是Rick Rothstein的一個很好的圓括號。 http://www.dailydoseofexcel.com/archives/2012/05/01/quick-vba-tip-parentheses/#comment-79416 –

0

這編譯:

Sub First() 

End Sub 

Function Two() As Boolean 

End Function 

Sub Sun() 
    If (Two()) Then 
     First 
    End If 
End Sub 

您需要從您的通話First刪除括號。