Declaração de seleção de caso do Excel VBA - explicada com exemplos

O 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 verificar várias condições é o SELECIONAR CASO demonstração.

Selecionar caso é útil quando você tem três ou mais condições que deseja verificar. 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 em que a declaração Selecionar Caso é útil quando você deseja obter a nota de um aluno com base nas notas que ele / ela obteve (abordado como exemplo posteriormente neste tutorial).

Nota: Todos os códigos de exemplo cobertos neste tutorial devem ser colocados em um módulo no VBA.

Selecione a sintaxe de maiúsculas e minúsculas

Abaixo está a sintaxe de Select Case no Excel VBA:

Selecione Case Test_Expression Case Value_1 Bloco de código quando Test_Expression = Value_1 Case Value_2 Code Block quando Test_Expression = Value_2 Case Value_3 Code Block quando Test_Expression = Value_3 Case Else Bloco de código quando nenhuma das condições do caso for atendida End 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 será executado.

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

Observação: Assim que uma condição é atendida, o VBA sai da construção de caso selecionado. 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.

Selecione exemplos de caso

Agora, para entender melhor como usar a instrução Select Case no VBA, vejamos alguns exemplos.

Observe que a maioria dos exemplos neste tutorial se destina a 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 então mostra uma caixa de mensagem com o número que o usuário inseriu.

Sub CheckNumber () Dim UserInput As Integer UserInput = InputBox ("Insira um número entre 1 e 5") Selecione Caso UserInput Caso 1 MsgBox "Você digitou 1" Caso 2 MsgBox "Você digitou 2" Caso 3 MsgBox "Você digitou 3" Case 4 MsgBox "Você digitou 4" Case 5 MsgBox "Você digitou 5" End Select End Sub

Observe que esse 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 de entrada é maior que 100 ou não.

Sub CheckNumber () Dim UserInput As Integer UserInput = InputBox ("Insira um número") Selecione Caso UserInput Case Is = 100 MsgBox "Você inseriu um número maior que (ou igual a) 100" End Select End Sub

Exemplo 3 - Usando Case Else para Pegar 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 abrangente 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 Integer UserInput = InputBox ("Insira um número") Selecione Case UserInput Case Is <100 MsgBox "Você digitou um número menor que 100" Case Else MsgBox "Você digitou um número maior que (ou igual a ) 100 "End Select End Sub

Exemplo 4 - Usando um intervalo de números

Em Select Case, você também pode verificar um intervalo de números.

O código abaixo pede uma entrada e mostra uma caixa de mensagem baseada no valor.

Sub CheckNumber () Dim UserInput As Integer UserInput = InputBox ("Insira um número entre 1 e 100") Selecione Caso UserInput Caso 1 a 25 MsgBox "Você digitou um número menor que 25" Caso 26 a 50 MsgBox "Você digitou um número entre 26 e 50 "Case 51 a 75 MsgBox" Você digitou um número entre 51 e 75 "Case 75 a 100 MsgBox" Você digitou um número maior que 75 "End Select End Sub

Exemplo 5 - Obtenha a nota com base nas notas marcadas

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 nas notas em um exame.

Sub Nota () Dim StudentMarks As Integer Dim FinalGrade As String StudentMarks = InputBox ("Enter Marks") Selecione Caso StudentMarks Case Is <33 FinalGrade = "F" Case 33 To 50 FinalGrade = "E" Case 51 To 60 FinalGrade = "D "Case 60 To 70 FinalGrade =" C "Case 70 To 90 FinalGrade =" B "Case 90 To 100 FinalGrade =" A "End Select MsgBox" A nota é "& FinalGrade End Sub

O código acima pede ao usuário as notas e, a partir dele, mostra uma caixa de mensagem com a nota final.

No código acima, especifiquei 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 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 CheckOddEven () Dim StudentMarks As Integer Dim FinalGrade As String StudentMarks = InputBox ("Enter Marks") Selecione Caso StudentMarks Case Is <33 FinalGrade = "F" Case 33 To 50 FinalGrade = "E" Case 51 To 60 FinalGrade = "D "Case 60 To 70 FinalGrade =" C "Case 70 To 90 FinalGrade =" B "Case Else FinalGrade =" A "End Select MsgBox" A nota é "& FinalGrade End Sub

Exemplo 6 - Criação de 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 normal e que retornará a nota dos alunos.

Abaixo está o código que criará a fórmula personalizada:

Função GetGrade (StudentMarks As Integer) Dim FinalGrade As String Selecionar caso StudentMarks Case Is <33 FinalGrade = "F" Case 33 To 50 FinalGrade = "E" Case 51 To 60 FinalGrade = "D" Case 60 To 70 FinalGrade = "C" Case 70 To 90 FinalGrade = "B" Case Else FinalGrade = "A" End Select GetGrade = FinalGrade End Function

Depois de ter 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 exemplo de código onde verifico se o número na célula A1 é ímpar ou par.

Sub CheckOddEven () CheckValue = Range ("A1"). Value Select Case (CheckValue 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 Selecionar caso para verificar vários valores no 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, 7 MsgBox "Today is a Weekend" Case Else MsgBox "Today is a Weekday" End Select End Sub

No código acima, verificamos duas condições (1 e 7) no mesmo caso.

Observação: a função de dia da semana retorna 1 para domingo e 7 para sábado.

Exemplo 9 - Instruções de caso de seleção 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 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 Select Case Else MsgBox "Today is a Weekday" End Select End 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 mais prática forma de saber o dia da semana / fim de semana.

Exemplo 10 - Verificando a seqüência de texto com caixa de seleção

Você pode verificar strings específicas usando Select Case e, em seguida, executar 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 quem ele deve se conectar para integração.

Sub OnboardConnect () Dim Department As String Department = InputBox ("Digite o nome do seu departamento") Selecione Case Department Case "Marketing" MsgBox "Entre em contato com Bob Raines para Onboarding" Case "Finance" MsgBox "Por favor, entre em contato com Patricia Cruz para Onboarding" Case "HR" MsgBox "Entre em contato com Oliver Rand para Onboarding" Case "Admin" MsgBox "Entre em contato com Helen Hume para Onboarding" Case Else MsgBox "Entre em contato com Tony Randall para Onboarding" End Select End Sub

Espero que todos os exemplos acima tenham sido úteis para entender o conceito e a aplicação do Select Case no Excel VBA.

Você também pode gostar dos seguintes tutoriais de VBA:

  • Loops do Excel VBA - para o próximo, faça enquanto, faça até, para cada um.
  • Para o próximo loop no Excel VBA.
  • Como gravar uma macro no Excel.

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave