TOP

VBA-Lição 7.2. Condições (Condições)

Além de verificar as condições If...Then...Else e Select Case, também podemos usar as seguintes verificações:

  • comparação de tipos de dados (funções IsNumeric, IsDate, IsEmpty, operador Is Nothing)
  • comparação de tipos de variáveis (função VarType)
  • comparando feeds de texto (operador Like)

  • Verificação de tipo de dados

    IsNumeric (a função que usamos na lição anterior) retorna TRUE (TRUE) se o valor for um número e FALSE (FALSE) se - não for um número:

    If IsNumeric(Range("A1")) = True Then 'SE O VALOR FOR NÚMERO...
    

    O código a seguir produz o mesmo efeito que o anterior (não precisamos incluir = True porque a construção em si é uma verificação de condição):

    If IsNumeric(Range("A1")) = True Then 'SE O VALOR FOR NÚMERO...
    

    Se quisermos verificar se um valor não é um número, podemos fazê-lo de duas maneiras:

    If IsNumeric(Range("A1")) = False Then 'SE O VALOR NÃO FOR UM NÚMERO...
    
    If Not IsNumeric(Range("A1")) Then 'SE O VALOR NÃO FOR UM NÚMERO...
    

    Vejamos mais algumas funções semelhantes a IsNumeric:

    If IsDate(Range("A1")) Then 'SE O VALOR FOR DATA...
    
    If IsEmpty(Range("A1")) Then 'SE VAZIO...
    
    If var_object Is Nothing Then 'SE O OBJETO NÃO ESTÁ DEFINIDO ...
    

    Verificando o tipo de uma variável

    Para executar comandos baseados no tipo de variável, precisaremos usar a função VarType.

    A lista de tipos de variáveis aparecerá assim que inserirmos o sinal "=":

    If VarType(my_variable) = vbInteger Then 'SE my_variable for do tipo variável Integer ...
    

    Values das constantes:

    Constante Valor
    vbEmpty0
    vbNull1
    vbInteger2
    vbLong3
    vbSingle4
    vbDouble5
    vbCurrency6
    vbDate7
    vbString8
    vbObject9
    vbError10
     If VarType(my_variable) = vbInteger Then 'SE my_variable for do tipo variável Integer ...
     'É idêntico a:
     If VarType(my_variable) = 2 Then 'SE my_variable for do tipo variável Integer ...
    

    Comparar feeds de texto (Like)

    Um pouco antes, usamos o seguinte trecho de código:

    my_variable = "Example 12345"
    
    If my_variable = "Example 12345" Then '=> VERDADEIRO (TRUE)
    

    Neste caso as duas fitas são iguais, mas se quisermos verificar se a variável contém o valor “12345”; sem considerar outros caracteres, então devemos usar o comando Like, e o operador * (asterisco) antes e depois do valor que procuramos.

    O operador * (asterisco) significa: qualquer caractere ou conjunto de caracteres:

    my_variable = "Example 12345"
    
    If my_variable Like "*12345*" Then '=> VERDADEIRO (TRUE)
    

    O operador # (hash) é decodificado como: qualquer caractere numérico único de 0 a 9:

    my_variable = "Example 12345"
    
    If my_variable Like "Example 12###" Then '=> VERDADEIRO (TRUE)
    

    Operador? (ponto de interrogação) é decifrado como: qualquer caractere único:

    my_variable = "Example 12345"
    
    If my_variable Like "?xample?1234?" Then '=> VERDADEIRO (TRUE)
    

    Também podemos usar caracteres específicos ou um conjunto de caracteres da mesma forma:

    my_variable = "Example 12345"
    
    If my_variable Like "[DEF]xample 1234[4-7]" Then '=> VERDADEIRO (TRUE)
    

    Operador! (ponto de exclamação) adicionado depois de [ significará: qualquer caractere não entre colchetes:

    my_variable = "Example 12345"
    
    If my_variable Like "[!GHIJ]xample 1234[!6-9]" Then '=> VERDADEIRO (TRUE)
    
    Neste contexto, os caracteres maiúsculos não são equivalentes aos mesmos caracteres minúsculos. Se você não quiser distinguir entre caracteres maiúsculos e minúsculos, basta escrever o comando Option Compare Text no início do módulo.