Выберите дело не или

Я рассчитываю выполнить Выбор случая только с одним случаем - где случай не равен "P", "Ev" или "Af".

Это то, что я до сих пор.

Select Case Range("my_range").Offset(0, column_offset).Value
    Case Not "P", "Ev", "Af"
        'my code
 End Select

Случай может равняться 50 различным значениям, и я хочу одно и то же действие (под 'my code) для всех из них, за исключением случаев, когда P, Ev или Af.

Я также пытался Not "P", Not "Ev", Not "Af" наряду с заменой , с Or но безрезультатно.

Ответ каждый раз:

Ошибка времени выполнения "13": несоответствие типов.

Я знаю, что мог бы заменить это на утверждение if в соответствии с...

If Range("my_range").Offset(0, column_offset).Value <> "P" And Range("my_range").Offset(0, column_offset).Value <> "Ev" And Range("my_range").Offset(0, column_offset).Value <> "Af" Then
    'my code
End if

но я бы предпочел использовать опцию Select Case, если смогу.

Есть какие-нибудь мысли?

Большое спасибо

РЕДАКТИРОВАТЬ

Я должен также сказать, что я пытался использовать

Select Case Range("my_range").Offset(0, column_offset).Value
    Case "P", "Ev", "Af"
        Exit Select
    Case Else
        'my code
End Select

но сообщение об ошибке:

Ошибка компиляции: ожидается: Do или For или Sub или Function или Property

продолжал появляться

1 ответ

Решение

Вы не можете использовать Not в этом случае. Но вы можете рефакторинг

Select Case Range("my_range").Offset(0, column_offset).Value
    Case "P", "Ev", "Af"
        'ignore this
    Case Else
        'my code
 End Select

Я знаю, что этот вопрос задавали очень давно, но сегодня я наткнулся на то же самое чудо: Not Оператор?

Я тоже не нашел этого Not можно использовать, но вместо этого можно использовать этот метод:

Select Case [variable]
    Case is <> [condition 1]
        'my code
End Select
Другие вопросы по тегам