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:
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:
- Como Copiar e Colar no VBA – Passo a Passo
- Loops VBA no Excel: For Next, Do While, Do Until, For Each (Com Exemplos)
- Como manipular planilhas do Excel com o VBA (com exemplos)
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!