2015-04-21 3 views
1

Я получил следующий код:Ошибка сравнения десятичных значений в VBA

aux = 97.8000030517578 

Select Case aux 
Case aux < 100 
    Debug.Print "Menor que 100" 
Case aux >= 97 And aux < 100 
    Debug.Print "Medio" 
Case aux < 97 
    Debug.Print "malo" 
End Select 

И не выполняет каких-либо условий в избранных, так что ничего не печатает. Любая идея, помощь?

+2

При использовании этих операторов в инструкции 'Case' вам нужно использовать ключевое слово' Is'. –

ответ

1

Я сделал это работает изменение:

aux = 97.8000030517578 
Select Case aux 
     Case 99 to 100 
      Debug.Print "Menor que 100" 
     Case 97 to 98.999 
      Debug.Print "Medio" 
     Case aux < 97 
      Debug.Print "malo" 
    End Select 

Я не знаю, если есть другой способ.

+1

Вам необходимо изменить 'Case aux <97' на' Case Is <97', чтобы ваш третий тест был правильно оценен. Тем не менее, все еще хорошая работа для сортировки первых двух условий. :) – L42

2

Вот еще один способ:

aux = 97.8000030517578 
Select Case True 
Case aux >= 99 And aux < 100: Debug.Print "Menor que 100" 
Case aux >= 97 And aux < 99: Debug.Print "Medio" 
Case aux < 97: Debug.Print "malo" 
End Select 

В первой попытке, вы на самом деле не испытывать aux но заявления.
Так может также выбрать случай, когда это заявление True.

+0

Это блестяще, я никогда не думал использовать аргумент case таким образом. –

+3

@DanDonoghue AFAIK это единственный способ использовать оператор 'Case' с операторами' And' или 'Or'. Очень удобный совет, если вы понимаете логику. –

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