Select Case no VBA – Passo a Passo com Exemplos

Quer aprender a usar a instrução Select Case no VBA? Então você está no lugar certo!

Quando se trata de programação no Excel VBA, é possível com a tradicional instrução IF Then Else para analisar várias condições e executar códigos com base nessas condições.m

Mas além dessa instrução, outra opção semelhante que permite verificar várias condições é a instrução SELECT CASE .

Select Case é útil quando você tem três ou mais condições que deseja verificar sem a necessidade de usar várias instruções If Then Else aninhadas. Se interessou pelo assunto? Então confira os detalhes a seguir para aprender a utilizar este recurso no VBA.

Select Case no VBA – Sintaxe

A instrução Select Case no VBA funciona da seguinte maneira:

Select Case Teste

Case Valor_1
Bloco de código quando Teste = Valor_1

Case Valor_2
Bloco de código quando Teste = Valor_2

Case Valor_3
Bloco de código quando Teste = Valor_3

Case Else
Bloco de código quando nenhuma das condições do caso for atendida

End Select
  • Teste: Esta é a expressão cujo valor analisamos usando diferentes casos (explicados melhor com os exemplos abaixo).
  • Condição_1, Condição_2,…: Representam são as condições nas quais a expressão de Teste é testada. Se atender à condição, o bloco de código para a condição fornecida será executado.

Para cada instrução Select Case que você usa, você precisa usar a instrução End Select.




Importante: Assim que uma condição for atendida, o VBA sai da instrução Select Case. Portanto, se você tiver cinco condições e a segunda for atendida, o VBA sairá do Select Case – e o restante das condições não será testado.

Exemplos de uso de Select Case no VBA

Agora, para melhore compreensão sobre o uso da instrução Select Case no VBA, vamos conferir alguns exemplos.

Note que a maioria dos exemplos neste guia se destina a explicar o conceito. Essa pode ou não ser a melhor maneira de fazer o trabalho.

Para começar, vamos conferir um exemplo simples de como a instrução Select Case nos permite verificar as condições.

Exemplo 1: Verificando número digitado pelo usuário

Neste primeiro exemplo, o código pede ao usuário para inserir qualquer número entre 1 e 5, e então mostra uma caixa de mensagem com o número que o usuário inseriu.

Sub VerificarNumero () 
Dim EntradaUsuario As Integer 
EntradaUsuario= InputBox ("Insira um número entre 1 e 5")

Select Case EntradaUsuario

Case 1 
MsgBox "Você digitou 1"

Case 2 
MsgBox "Você digitou 2"

Case 3 
MsgBox "Você digitou 3"

Case 4 
MsgBox "Você digitou 4"

Case 5 
MsgBox "Você digitou 5"

End Select 
End Sub

Note que o código acima está longe de ser útil e nem mesmo à prova de falhas. Por exemplo, se você inserir 6 ou até mesmo um texto, o código não fará nada. Mas, conforme mencionado anteriormente, intenção aqui é mostrar como o Select Case funciona.

Exemplo 2: Select Case com IS

Dentro da instrução Select Case, também é possível usar uma condição IS para verificar um determinado valor.

Por exemplo, o código abaixo verifica se o número de entrada é maior do que 10 ou não.

Sub VerificaNumero () 
Dim ValorEntrada As Integer 
ValorEntrada = InputBox ("Insira um número")

Select Case ValorEntrada

Case Is <10
MsgBox "Você digitou um número menor que 10"

Case Is> = 10
MsgBox "Você digitou um número maior que ( ou igual a) 10 "

End Select 
End Sub

Exemplo 3: Usando Select Case Else




No exemplo anterior, usamos duas condições (menor que 10 ou maior ou igual a 10). Em vez do segundo caso com uma condição, você também pode usar Case Else.

A instrução Case Else atua para pegar qualquer coisa que não se enquadre em nenhum dos casos anteriores. Abaixo está um exemplo de uso:

Sub VerificaValor () 
Dim ValorEntrada As Integer 
ValorEntrada = InputBox ("Insira um número")

Select Case ValorEntrada

Case Is <10
MsgBox "Você digitou um número menor que 10"

Case Else 
MsgBox "Você digitou um número maior que (ou igual a ) 10"

End Select 
End Sub

Exemplo 4: Verificando intervalo de números

Através da instrução Select Case, também é possível verificar um intervalo de números. O código abaixo pede uma entrada ao usuário e mostra uma caixa de mensagem baseada no valor.

Sub VerificaValor () 
Dim ValorEntrada As Integer 
ValorEntrada = InputBox ("Insira um número entre 1 e 100")

Select Case  ValorEntrada

Case 1 To 25 
MsgBox "Você digitou um número menor que 25"

Case 26 To  50 
MsgBox "Você digitou um número entre 26 e 50 "

Case 51 To  75 
MsgBox" Você digitou um número entre 51 e 75 "

Case 75 To  100 
MsgBox" Você digitou um número maior que 75 "

End Select 
End Sub

Exemplo 5: Obtendo a nota conforme a pontuação

Até aqui vimos exemplos básicos, mas que não são realmente úteis no cotidiano. No entanto, agora o exemplo a seguir mostrará uma opção mais próxima do mundo real.

O código a seguir fornecerá a nota que um aluno obtém com base nas pontuações em um exame.

Sub Nota()
Dim Pontuação As Integer
Dim NotaFinal As String
Pontuação = InputBox("Insira a Pontuação do aluno")

Select Case Pontuação

Case Is < 33
NotaFinal = "F"

Case 33 To 50
NotaFinal = "E"

Case 51 To 60
NotaFinal = "D"

Case 60 To 70
NotaFinal = "C"

Case 70 To 90
NotaFinal = "B"

Case 90 To 100
NotaFinal = "A"

End Select
MsgBox "A nota é " & NotaFinal

End Sub

Observe que o código acima solicita ao usuário as pontuações e, a partir dela, mostra uma caixa de mensagem com a nota final do aluno. No código acima, especificamos todas as condições – para as pontuações de 0 a 100.

Outra maneira de usar Select Case é usar Case Else no final. Isso pode ser útil quando você considera todas as condições e especifica o que fazer quando nenhuma das condições for atendida.

O código abaixo é uma variação do código de notas com uma pequena alteração. No final, ele possui uma instrução Case Else, que será executada quando nenhuma das condições acima for verdadeira.

Sub Nota()
Dim Pontuação As Integer
Dim NotaFinal As String
Pontuação = InputBox("Insira a Pontuação do aluno")

Select Case Pontuação

Case Is < 33
NotaFinal  = "F"

Case 33 To 50
NotaFinal = "E"

Case 51 To 60
NotaFinal = "D"

Case 60 To 70
NotaFinal = "C"

Case 70 To 90
NotaFinal = "B"

Case Else
NotaFinal = "A"

End Select
MsgBox "A nota é " & NotaFinal

End Sub

Exemplo 6: Criando uma função personalizada com Select Case

No exemplo anterior, o código solicitou ao usuário a entrada das pontuações dos alunos. Você também pode criar uma função personalizada no VBA que pode ser usada como qualquer função de planilha normal e que retornará a nota dos alunos.




Abaixo está o código que criará a função personalizada:

Function NotaAluno (Pontuação As Integer)
Dim NotaFinal As String

Select Case Pontuação

Case Is < 33
NotaFinal = "F"

Case 33 To 50
NotaFinal = "E"

Case 51 To 60
NotaFinal = "D"

Case 60 To 70
NotaFinal = "C"

Case 70 To 90
NotaFinal = "B"

Case Else
NotaFinal = "A"

End Select
NotaAluno = NotaFinal

End Function

Após ter o código acima inserido em um módulo, você poderá usar a função NotaAluno em sua planilha conforme mostrado no exemplo abaixo:

Select Case no VBA

Exemplo 7: Verificando Valor Par ou Ímpar com Select Case

Outro exemplo de uso da instrução Select Case no VBA é a possibilidade de verificar se um valor é par ou ímpar. Veja o exemplo abaixo:

Sub VerificaParImpar()
Valor = Range("A1").Value

Select Case (Valor Mod 2) = 0

Case True
MsgBox "O número é Par"

Case False
MsgBox "O número é Ímpar"

End Select
End Sub

Exemplo 8: Verificando dia da semana / fim de semana (várias condições)

Você também pode usar a instrução Select Case no VBA para verificar vários valores no mesmo tipo.

Por exemplo, o código abaixo usa a data atual para mostrar se hoje é um dia de semana ou fim de semana (onde os dias de fim de semana são sábado e domingo)

Sub VerificaDia()
Select Case Weekday(Now)

Case 1, 7
MsgBox "Hoje é um fim de semana"

Case Else
MsgBox "Hoje é dia de Semana"

End Select
End Sub

Note no código acima que verificamos duas condições (1 e 7) no mesmo caso. Neste caso, a função Weekday retorna 1 para domingo e 7 para sábado.


Exemplo 9: Select Case aninhada

Você também pode aninhar uma instrução Select Case dentro de outra.

Abaixo está um código que verifica se um dia é um dia de semana ou um fim de semana e, se for um fim de semana, ele exibirá se é um sábado ou um domingo.

Sub VerificaDia()
Select Case Weekday(Now)

Case 1, 7
Select Case Weekday(Now)
Case 1
MsgBox "Hoje é Domingo"
Case Else
MsgBox "Hoje é Sábado"
End Select

Case Else
MsgBox "Hoje é Dia de semana"
End Select
End Sub

Observe no exemplo acima que aninhamos o Select Case para verificar se o fim de semana é um sábado ou um domingo.

Exemplo 10: Verificando um texto com Select Case

Você também pode verificar strings específicas usando a instrução Select Case no VBA e, em seguida, executar o código com base nela.

No código de exemplo abaixo, ele pede ao usuário para inserir o nome do departamento e mostra o nome da pessoa com quem ela deverá se comunicar.

Sub VerificarDepartamento () 
Dim Departmento As String 
Departmento = InputBox ("Digite o nome do seu departamento")

Select Case Departmento

Case "Marketing" 
MsgBox "Entre em contato com Julio pelo ramal 3030"

Case "Financeiro" 
MsgBox "Por favor, entre em contato com Raquel pelo ramal 0940"

Case "RH" 
MsgBox "Entre em contato com Cíntia pelo ramal 8055"

Case "TI" 
MsgBox "Entre em contato com Pedro pelo ramal 0944"

Case Else 
MsgBox "Por favor, entre em contato com a Central de Atendimento"

End Select 
End Sub

Confira também as seguintes dicas de Excel VBA:

E então, o que achou dos exemplos de uso da instrução Select Case no VBA? Caso tenha ficado com alguma dúvida, deixe o seu comentário abaixo!