ВГОРУ

VBA-Урок 7.2. Умови (Conditions)

YouLibreCalc for Excel logo

Крім перевірки умовами If...Then...Else та Select Case, ми можемо також використовувати наступні перевірки:

  • порівняння типів даних (функції IsNumeric, IsDate, IsEmpty, оператор Is Nothing)
  • порівняння типів змінних (функція VarType)
  • порівняння текстових стрічок (оператор Like)

  • Перевірка типу даних

    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 'ЯКЩО ОБ'ЄКТ НЕ Є ВИЗНАЧЕНИМ ...
    

    Перевірка типу змінної

    Щоби виконати команди, які базуються на типі змінної, нам буде потрібно використати функцію 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 ...
    

    Порівняння текстових стрічок (Like)

    Трохи раніше ми використовували наступний фрагмент коду:

    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 на початку модуля.