2014-12-31 4 views
1

Я пытаюсь написать запись вложенного оператора if в VBA. В коболе я обычно использовал предложение оценки. Но что я использую в 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 

Это более короткий способ написать тот же код. Должен работать по модулю синтаксиса; надеюсь это поможет.

Смежные вопросы