VBA Select Case e operador Like



Se você chegou até aqui, você sabe pelos seus testes, que o Select Case não aceita o operador Like. Mas saiba que, existem várias maneiras de contornar esse problema, principalmente com os If ElseIf, etc. O código proposto aqui vai ajudar a resolver alguns casos.

Select Case & Like le test

Tente o seguinte código para verificar a afirmação da introdução.

Sub Select_Case_Like()
palavra = "KAKAO"
Select Case palavra
    Case palavra Like "*K*K*"
        MsgBox "bom"
    Case Else
        MsgBox "ruim"
End Select
End Sub


Seja qual for o conteúdo da variável 'palavra', ele sempre retornará o 'ruim'. Select Case não gosta do Like.

Teste de expressão: True

A solução para usar o operador Like em um Select Case é adicionar a palavra True (Falsa).

Veja um exemplo de código :

Sub Select_Case_True_Like()
palavra = "KAO"
Select Case True
    Case palavra Like "*K*K*"
        MsgBox "bom"
    Case Else
        MsgBox "ruim"
End Select
palavra = "KAKAO"
Select Case True
    Case palavra Like "*K*K*"
        MsgBox "bon"
    Case Else
        MsgBox "ruim"
End Select
End Sub

Uma função booleana muito útil

A função

Function Case_True_Like(mot As String) As Boolean
Select Case True
    Case palavra Like "*K*K*"
        Case_True_Like = True
    Case Else
        Case_True_Like = False
End Select
End Function

A chamada desta função

Sub Test()
MsgBox Case_True_Like("KAKAO")
End Sub


Esta dica é uma alternativa para o If ElseIf, útil em casos de preferir Select Case, é indispensável testar com Like.

Veja também

Artigo original publicado por deri58. Tradução feita por pintuda. Última modificação: 2 de março de 2018 às 06:57 por ninha25.
Este documento, intitulado 'VBA Select Case e operador Like', está disponível sob a licença Creative Commons. Você pode copiar e/ou modificar o conteúdo desta página com base nas condições estipuladas pela licença. Não se esqueça de creditar o CCM (https://br.ccm.net/) ao utilizar este artigo.
VBA Excel - Combobox em cascata em um UserForm
VBA - Verificar se existe um valor em uma variável matriz