Excel VBA tem a construção IF Then Else que você pode usar para analisar várias condições e executar códigos com base nessas condições.
Outra construção semelhante que permite que você verifique várias condições é a instrução SELECT CASE.
Selecionar caso é útil quando você tem três ou mais condições que deseja checar. Você também pode usar isso com duas condições (mas acho que If Then Else é mais fácil de usar nesses casos).
Um exemplo simples onde a instrução Select Case é útil quando você deseja obter a nota de um aluno com base nas notas que ele / ela obteve (coberto como um exemplo mais tarde neste tutorial).
Nota: Todos os códigos de exemplo cobertos neste tutorial devem ser colocados em um módulo no VBA.
Este tutorial cobre:
Select Case Syntax
Abaixo está a sintaxe do Select Case no Excel VBA:
Select Case Test_ExpressionCase Value_1Code Block when Test_Expression = Value_1Case Value_2Code Block when Test_Expression = Value_2Case Value_3Code Block when Test_Expression = Value_3Case ElseCode Block when none of the case conditions are metEnd Select
- Test_Expression: esta é a expressão cujo valor analisamos usando diferentes casos (explicados melhor com os exemplos abaixo).
- Condition_1, Condition_2,…: estas são as condições nas quais a expressão de texto é testada. Se atender à condição, o bloco de código para a condição fornecida é executado.
Para cada instrução Select Case que você usa, é necessário usar a instrução End Select.
Select Case Examples
Agora para Para entender melhor como usar a instrução Select Case no VBA, vamos examinar alguns exemplos.
Observe que a maioria dos exemplos neste tutorial tem o objetivo de explicar o conceito. Essa pode ou não ser a melhor maneira de fazer o trabalho.
Vamos começar com um exemplo simples de como o Select Case nos permite verificar as condições.
Exemplo 1 – Verifique os números
No exemplo abaixo, o código pede ao usuário para inserir qualquer número entre 1 e 5 e, em seguida, mostra uma caixa de mensagem com o número que o usuário inseriu.
Sub CheckNumber()Dim UserInput As IntegerUserInput = InputBox("Please enter a number between 1 and 5")Select Case UserInputCase 1MsgBox "You entered 1"Case 2MsgBox "You entered 2"Case 3MsgBox "You entered 3"Case 4MsgBox "You entered 4"Case 5MsgBox "You entered 5"End SelectEnd Sub
Observe que este código está longe de ser útil e nem mesmo é à prova de falhas. Por exemplo, se você inserir 6 ou qualquer string, não fará nada. Mas, como mencionei, minha intenção aqui é mostrar como o Select Case funciona.
Exemplo 2 – Usando Select Case com IS Condition
Você pode usar uma condição IS com a construção Select Case para verificar o valor dos números.
O código a seguir verifica se o número inserido é maior que 100 ou não.
Sub CheckNumber()Dim UserInput As IntegerUserInput = InputBox("Please enter a number")Select Case UserInputCase Is < 100MsgBox "You entered a number less than 100"Case Is >= 100MsgBox "You entered a number more than (or equal to) 100"End SelectEnd Sub
Exemplo 3 – Usando Case Else para capturar tudo
No exemplo acima, usei duas condições (menor que 100 ou maior ou igual a 100).
Em vez do segundo caso com uma condição, você também pode usar Case Else.
Case Else atua como um pega-tudo e qualquer coisa que não se enquadre em nenhum dos casos anteriores é tratado pelo Case Else.
Abaixo está um exemplo de código onde usei Case Else:
Sub CheckNumber()Dim UserInput As IntegerUserInput = InputBox("Please enter a number")Select Case UserInputCase Is < 100MsgBox "You entered a number less than 100"Case ElseMsgBox "You entered a number more than (or equal to) 100"End SelectEnd Sub
Exemplo 4 – Usando um intervalo de números
No Select Caso, você também pode verificar se há um intervalo de números.
O código abaixo pede uma entrada e mostra uma caixa de mensagem com base no valor.
Sub CheckNumber()Dim UserInput As IntegerUserInput = InputBox("Please enter a number between 1 and 100")Select Case UserInputCase 1 To 25MsgBox "You entered a number less than 25"Case 26 To 50MsgBox "You entered a number between 26 and 50"Case 51 To 75MsgBox "You entered a number between 51 and 75"Case 75 To 100MsgBox "You entered a number more than 75"End SelectEnd Sub
Exemplo 5 – Obtenha a nota com base nas marcas avaliadas
Até agora, vimos exemplos básicos (que não são realmente úteis no mundo prático).
Aqui está um exemplo que está mais próximo de um exemplo do mundo real, onde você pode usar Select Case no Excel VBA.
O código a seguir fornecerá a nota que um aluno obtém com base as notas em um exame.
O código acima pede ao usuário as notas e com base nele, mostra uma caixa de mensagem com a nota final.
No código acima, eu tenho especificou todas as condições – para as marcas de 0 a 100.
Outra maneira de usar Select Case é usar Case Else no final. Isso é ú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 da nota com uma pequena alteração. No final, possui uma instrução Case else, que será executada quando nenhuma das condições acima for verdadeira.
Exemplo 6 – Criando uma função personalizada (UDF) usando Select Case
No exemplo acima, o código solicitou ao usuário a entrada de marcas.
Você também pode criar uma função personalizada (função definida pelo usuário) que pode ser usada como qualquer função de planilha regular e que retornará a nota dos alunos.
Abaixo está o código que criará a fórmula personalizada:
Function GetGrade(StudentMarks As Integer)Dim FinalGrade As StringSelect Case StudentMarksCase Is < 33FinalGrade = "F"Case 33 To 50FinalGrade = "E"Case 51 To 60FinalGrade = "D"Case 60 To 70FinalGrade = "C"Case 70 To 90FinalGrade = "B"Case ElseFinalGrade = "A"End SelectGetGrade = FinalGradeEnd Function
Assim que você tiver esse código no módulo, você pode usar a função GetGrade na planilha conforme mostrado abaixo.
Exemplo 7 – Verifique ODD / EVEN com Select Case
Abaixo está um código de exemplo onde eu verifique se o número na célula A1 é ímpar ou par.
Exemplo 8 – Verificando dia da semana / fim de semana (várias condições)
Você também pode usar Selecionar caso para verificar vários valores em o mesmo caso.
Por exemplo, o código a seguir 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 CheckWeekday()Select Case Weekday(Now)Case 1, 7MsgBox "Today is a Weekend"Case ElseMsgBox "Today is a Weekday"End SelectEnd Sub
No código acima, verificamos duas condições (1 e 7) no mesmo caso.
Observação: a função dia da semana retorna 1 para domingo e 7 para sábado.
Exemplo 9 – Instruções Select Case Aninhadas
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 fim de semana, exibirá se é sábado ou domingo.
Sub CheckWeekday()Select Case Weekday(Now)Case 1, 7 Select Case Weekday(Now) Case 1 MsgBox "Today is Sunday" Case Else MsgBox "Today is Saturday" End SelectCase ElseMsgBox "Today is a Weekday"End SelectEnd Sub
No código acima, Aninhei o Select Case para verificar se o fim de semana é um sábado ou um domingo.
Nota: O exemplo mostrado acima é para explicar o conceito. Esta não é a melhor ou a maneira mais prática de descobrir o dia da semana / fim de semana.
Exemplo 10 – Verificando string de texto com Select Case
Você pode verificar strings específicas usando Select Case e então execute o código com base nele.
No código de exemplo abaixo, ele pede ao usuário para inserir o nome do departamento e mostra o nome da pessoa com a qual ele deve se conectar para a integração.
Sub OnboardConnect()Dim Department As StringDepartment = InputBox("Enter Your Department Name")Select Case DepartmentCase "Marketing"MsgBox "Please connect with Bob Raines for Onboarding"Case "Finance"MsgBox "Please connect with Patricia Cruz for Onboarding"Case "HR"MsgBox "Please connect with Oliver Rand for Onboarding"Case "Admin"MsgBox "Please connect with Helen Hume for Onboarding"Case ElseMsgBox "Please connect with Tony Randall for Onboarding"End SelectEnd Sub
Espero que todos os exemplos acima tenham sido úteis para entender o conceito e a aplicação de Select Case no Excel VBA.
Você também pode gostar dos seguintes tutoriais de VBA:
- Excel VBA Loops – Para Próximo, Do While, Do until, For each.
- Para Next Loop in Excel VBA.
- Como gravar uma macro no Excel.