waysmoove
waysmoove

Reputation: 25

VBA nested if inquiry

I am trying to write write a nested if statement in VBA. In cobol, I would typically use the evaluate clause. But what do I use in VBA so as to avoid a long loop.

Example.

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

Upvotes: 1

Views: 177

Answers (3)

Tom Robinson
Tom Robinson

Reputation: 1930

I do it this way:

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

Upvotes: 2

Yulia V
Yulia V

Reputation: 3559

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

This is a shorter way to write the same code. Should work modulo syntax; hope this helps.

Upvotes: 2

VoteCoffee
VoteCoffee

Reputation: 5107

In the example you gave I'd use a switch command:

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

You could also do if ... elseif ... end if

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

Upvotes: 3

Related Questions