2011-04-15 14 views
0

聲明我有以下代碼:如果再在VBA

If Label1 = 0 Then 
btn1.Enabled = False 
ElseIf Label2 = 0 Then 
btn2.Enabled = False 
ElseIf Label3 = 0 Then 
btn3.Enabled = False 
ElseIf Label4 = 0 Then 
btn4.Enabled = False 

End If 
End If 
End If 

End Sub 

現在,當它的條件後運行IOS真正的它結束子。我希望所有能夠執行的條件。所以現在,如果Label2 = 0,該按鈕被禁用,程序結束。我希望它繼續檢查其餘的標籤。我確定這是一個else/If然後問題。

+2

順便說一句,你的代碼使用了太多「`結束If`s」。因爲它發佈的代碼,如果需要他們說法是不是在同一行如果那麼子句只有一個「`結束If`」 – Oneide 2011-04-15 16:24:45

回答

4

你不需要ElseIfs。

如果你想測試的所有條件,然後分別測試它們

If Label1 = 0 Then 
btn1.Enabled = False 
End If 
If Label2 = 0 Then 
btn2.Enabled = False 
End If 
If Label3 = 0 Then 
btn3.Enabled = False 
End If 
If Label4 = 0 Then 
btn4.Enabled = False 
End If 
+1

結束If語句是必需的。 – Alain 2011-04-15 15:50:44

+0

這是真的:-) – Richard210363 2011-04-15 16:01:03

0

不要使用ElseIf:使用獨立If/Then/End If結構的所有標籤。

1

只有當你使用的if-else其中的一個會發生,如果條件塊(這將是第一個是真的)。如果你想每個人的結果,那麼使用4單獨的IF條件語句。

0

你必須對你的代碼更改爲:

If Label1 = 0 Then btn1.Enabled = False 
If Label2 = 0 Then btn2.Enabled = False 
If Label3 = 0 Then btn3.Enabled = False 
If Label4 = 0 Then btn4.Enabled = False 

End Sub 
3

剛剛上市的緣故,這裏是另一種可能性:

btn1.Enabled = (Label1 <> 0) 
btn2.Enabled = (Label2 <> 0) 
btn3.Enabled = (Label3 <> 0) 
btn4.Enabled = (Label4 <> 0)