2014-12-31 96 views
1

我想寫在VBA編寫一個嵌套的if語句。在cobol中,我通常會使用評估條款。但是我在VBA中使用什麼來避免長循環。VBA嵌套,如果查詢

例子。

if cmbfield = "green" then 
me.frame1.enable = true 
else 
me.frame2.enable = false 
me.frame3.enable = false 
end if 
if cmbfield = "red" then 
me.frame2.enable = true 
else 
me.frame1.enable = false 
me.frame3.enable = false 
end if 
if cmbfield = "white" then 
me.frame3.enable = true 
else 
me.frame1.enable = false 
me.frame2.enable = false 
end if 

回答

2

我做這種方式:

Me.frame1.enabled = (cmbfield = "green") 
Me.frame2.enabled = (cmbfield = "red") 
Me.frame3.enabled = (cmbfield = "white") 
+0

偉大的迴應,這對我來說非常合適。 – waysmoove

3

在這個例子中你給我會使用一個開關命令:

http://www.techonthenet.com/excel/formulas/case.php

Select Case test_expression 

    Case condition_1 
     result_1 

    Case condition_2 
     result_2 

    ... 

    Case condition_n 
     result_n 

    Case Else 
     result_else 

End Select 

你也可以做,如果... ... ELSEIF結束,如果

http://www.techonthenet.com/excel/formulas/if_then.php

If condition_1 Then 
    result_1 

ElseIf condition_2 Then 
    result_2 

... 

ElseIf condition_n Then 
    result_n 

Else 
    result_else 

End If 
+1

看來,[COBOL的評估(http://www.fluffycat.com/COBOL/Evaluate/)相當於一個選擇的情況下。很好的答案。 – RubberDuck

+1

非常感謝您選擇大小寫的語法。將在未來的工作中納入。 – waysmoove

2
Dim isGreen as Boolean, isRed as Boolean, isWhite as Boolean 
isGreen = (cmbfield = "green") 
isRed = (cmbfield = "red") 
isWhite = (cmbfield = "white") 

me.frame1.enabled = isGreen 
me.frame2.enabled = isRed 
me.frame3.enabled = isWhite 

這是編寫相同代碼的較短方式。應該工作模語法;希望這可以幫助。