2013-04-01 5 views
0

VBA начинающий здесь. Я пытаюсь сделать довольно простой оператор if/then в VBA 2003, но я столкнулся с этой проблемой. Мой код выглядит следующим образом:VBA If Then or Statementments

Dim var as Integer 
If var = 1 or 2 Then 
    'Do stuff 
Else 
    MsgBox ("error") 

Я продолжаю сталкиваться с проблемой с заявлением или. Если я изменю его на var = 1, код будет работать без заминки; если я переписал его как

If var = 1 or var = 2 

тогда он отлично работает. Но поскольку я хотел бы расширить это, возможность написать это более сплоченно, было бы здорово. Что мне не хватает? :(

+0

Если вы хотите использовать условие «или» вам нужно снова использовать переменную т.е. если переменная = 1 или вар = 2 Тогда –

+0

У вас уже есть несколько хороших ответов, но для объяснения того, что происходит underhoodwise: ИЛИ двух целых чисел дает вам побитовое ИЛИ из двух значений: 1 - 0001 в двоичном формате, 2 - 0010, ORing их - 0011 или 3, поэтому Var = 1 или 2 будет истинным, если Var = 3 –

ответ

2

Вы должны написать:.

If var = 1 or var = 2 

потому or соединяет два условия, а не два значения, которые являются частью одного и того же состояния

2

Если вы хотите более чистый код, вы можете использовать case выражение вместо:.

select case var 
    case 1, 2 
     'Do stuff 
    case else 
     MsgBox ("error") 
end select