2016-06-01 36 views
-1

所以我M在Excel中VBA編寫UDF的那種:如果那麼其他Excel VBA - 「如果」需要?

function ... if ... then ... else for i... to ... equations ... next i * end function

現在我注意到,該功能似乎工作得很好,但我不知道我是否應該再使用「結束時,如果「在代碼中(*)的位置?如果我這樣做,我會收到一個錯誤消息,說明如果相應的IF到那個「結束如果」塊,沒有相應的IF,但是!?所以一般來說,如果其他結構中不存在對「結束」的需求嗎?提前致謝!

/編輯:'如果...然後...其他'是一個班輪。然而,else塊確實包含多行,特別是一個循環...

+0

如果你的If是一行(如果,那麼,否則在一行中)你不需要End If – gizlmo

+0

複製實際代碼,以便我們可以更好地看到它。你可以做1行if語句。如果它在一行中,則不需要結束 - 但for循環不是if的一部分。總之,for循環將以任一方式運行。 如果是多行,那麼它需要結束。 – CyberClaw

+0

所有這些在VBA幫助中都有詳細描述。你讀過了嗎? –

回答

2

如果您將IF THEN ELSE放在一行中,那麼if條件在該行結束,並且下一行將被執行,無論如何。

例如,

If true then x =1 else x = 2 
y = 1 

這種情況下

如果屬實,x是1且y爲1

如果假,x是2並且y爲1


if true then 
    x = 1 
else 
    x = 2 
    y = 1 
end if 

這種情況下,

如果屬實,x是1和Y是空

如有虛假,x是2和y爲1


此外,如果你做

If true then x = 1 else 
x = 2 

無論真假,x總是2

0

是的,你需要End If語句或者你會得到一個錯誤。

只有當你的if語句是一個班輪,你不需要它,如:

If 1 = 1# Then result = "true" 

但:

If 1 = 1# Then 
    result = "true" 

不起作用,除非它被關閉結束如果像這樣:

If 1 = 1# Then 
    result = "true" 
End If 

看不清楚你是如何構建你的函數,但如果它的工作沒有結束如果,然後我猜測它是一個有效的單行If語句,或者您的代碼中某處存在On Error Resume Next。