VBA-Урок 7.2. Условия (Conditions)

Условие, что базируется на типе

IsNumeric (функция, которую мы использовали в предыдущем уроке) возвращает ПРАВДА (TRUE), если значение является числом, и ЛОЖЬ (FALSE), если - не является числом:

 If IsNumeric (Range ("A1")) = True Then 'ЕСЛИ ЗНАЧЕНИЕ ЯВЛЯЕТСЯ ЧИСЛОМ ...

Следующий код дает такой же эффект, как и предыдущий (мы не должны включать = True, так как сама конструкция является проверкой условия):

 If IsNumeric (Range ("A1")) = True Then 'ЕСЛИ ЗНАЧЕНИЕ ЯВЛЯЕТСЯ ЧИСЛОМ...

Если мы хотим проверить является ли значение не числом, то мы можем это сделать двумя способами:

 If IsNumeric (Range ("A1")) = False Then 'ЕСЛИ ЗНАЧЕНИЕ НЕ ЯВЛЯЕТСЯ ЧИСЛОМ ...
 If Not IsNumeric (Range ("A1")) Then 'ЕСЛИ ЗНАЧЕНИЕ НЕ ЯВЛЯЕТСЯ ЧИСЛОМ ...

Давайте рассмотрим еще несколько подобных IsNumeric функций:

 If IsDate (Range ("A1")) Then 'ЕСЛИ ЗНАЧЕНИЕ ЯВЛЯЕТСЯ ДАТОЙ ...
If IsEmpty(Range("A1")) Then 'ЕСЛИ ПУСТО ...
 If var_object Is Nothing Then 'ЕСЛИ ОБЪЕКТ НЕ ОПРЕДЕЛЕН...

Условие, базирующееся на типе переменной

Чтобы выполнить команды, основанные на типе переменной (Variant), нам потребуется использовать функцию VarType .

Список типов переменных появится как только мы введем знак "=":

If VarType(my_variable) = vbInteger Then 'ЕСЛИ my_variable является типом переменной Integer...

Значения констант:
Константа Значение
vbEmpty0
vbNull1
vbInteger2
vbLong3
vbSingle4
vbDouble5
vbCurrency6
vbDate7
vbString8
vbObject9
vbError10

If VarType(my_variable) = vbInteger Then 'ЕСЛИ my_variable является типом переменной Integer ...
'Является идентичним до:
If VarType (my_variable) = 2 Then 'ЕСЛИ my_variable является типом переменной Integer ...

Условие, базирующееся на сравнении двух текстовых строк

Немного раньше мы использовали следующий фрагмент кода:

my_variable = "Example 12345"

If my_variable = "Example 12345" Then ' => ПРАВДА (TRUE)

В этом случае две строки одинаковы, но если мы хотим проверить содержит ли переменная значение "12345" без учета других символов, то нам следует использовать команду Like и оператор * (звездочка) перед и после значения, что мы ищем.

Оператор * (звездочка) расшифровывается как: любой символ или набор символов:

my_variable = "Example 12345"

If my_variable Like "*12345*" Then ' => ПРАВДА (TRUE)

Оператор # (решетка) расшифровывается как: любой числовой единичный символ от 0 до 9:

my_variable = "Example 12345"

If my_variable Like "Example 12###" Then ' => ПРАВДА (TRUE)

Оператор ? (вопросительный знак) расшифровывается как: любой единичный символ:

my_variable = "Example 12345"

If my_variable Like "?xample?1234?" Then ' => ПРАВДА (TRUE)
Мы также можем использовать определенные символы или набор символов таким же образом:
my_variable = "Example 12345"

If my_variable Like "[DEF]xample 1234[4-7]" Then ' => ПРАВДА (TRUE)

Оператор ! (восклицательный знак) добавлен после знака [ будет означать: любой символ, не включенный в квадратные скобки:

my_variable = "Example 12345"

If my_variable Like "[!GHIJ]xample 1234[!6-9]" Then ' => ПРАВДА (TRUE)
Комментарий : В данном контексте, символы с большой буквы не являются эквивалентными таким же символам с маленькой буквы. Если вы не хотите делать различия между большими и маленькими символами, тогда просто пропишите команду Option Compare Text в начале модуля.

Статьи по теме:

  • VBA-Урок 7.1. Условия (Conditions)