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)
  • VBA-Урок 8.1. Цикли (Loops)