Есть ли какие-либо ограничения для условия IF при использовании «ИЛИ» в VB? - PullRequest
5 голосов
/ 06 февраля 2012

В моем коде я хочу использовать, если условие.В котором я хочу использовать «ИЛИ» около 18 раз.Например:

If a="something" or a="something" or a="something" or.........(up to 18 times)... then
  'do nothing
else
  'do action
end if

[Примечание: значение a меняется в Для цикла каждый раз], поэтому я просто хочу спросить, есть ли какие-либо ограничения в IFдля использования ИЛИ в ограниченное время.ИЛИ есть ли другой лучший способ сделать то же самое.

Спасибо

Ответы [ 2 ]

14 голосов
/ 06 февраля 2012

Насколько я знаю, ограничений при использовании OR таким способом нет.

Тем не менее, вы можете рассмотреть альтернативные способы кодирования этого.

Отрицание условия с помощью Not

Во-первых, если вы do nothing в первом случае, тогда рассмотрите , используя выражение Not :

If Not True Then
'do somethin
'no else
End If

Рассмотрите возможность использования Select Case

Во-вторых, если вы проверяете ту же самую переменную, вы можете либо рассмотреть , используя Select Case, но в вашем случае это не подходит, если у вас только один случай.

Попробуйте использовать поиск

В конце концов, если вы проверяете строки, вам, вероятно, лучше использовать поиск в массиве Application.Match, если вы находитесь в Excel, или .Contains) или внутри строки с использованием Instr.

Использование сборника или словаря

[EDIT] Еще один очень хороший способ справиться с этим - использовать словарную структуру VBA и проверить, существует ли a (см. MSDN для некоторой информации).

6 голосов
/ 06 февраля 2012

Этот ответ является лишь подробным изложением моих комментариев к Джей-Майю, полная заслуга ему. Я думаю, что оригинальный постер означал, что «Нечто» в его вопросе отличается, а a является переменной цикла.

For each a in MyList

   Select Case a
   Case "something", "something2", "something3", "something4", "something5", _
        "something6", "something7", "something8", "something9", "something10", _
        "something11", "something12", "something13", "something14", "something15", _
        "something16", "something17", "something18"

       'DO NOTHING

   Case Else

       'do-something code goes here
       ' and here
       ' and here
       ' and here
   End Select

Next a
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...