VBA Select Case e operador Like

Você já deve saber 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

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

Foto: © Dzmitry Kliapitski - 123RF.com

Nosso conteúdo é produzido em colaboração com especialistas em tecnologia da informação sob o comando de Jean-François Pillou, fundador do CCM.net. CCM é um site sobre tecnologia líder em nível internacional e está disponível em 11 idiomas.
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 (br.ccm.net) ao utilizar este artigo.

Assine nossa newsletter!

Assine nossa newsletter!
Junte-se à comunidade