Instrução de comutação VBA do Excel
A mudança no VBA é semelhante à seleção da função de maiúsculas e minúsculas. A única diferença entre elas é que temos que escrever códigos muito menores em um switch em comparação para selecionar maiúsculas e minúsculas. Podemos escrever uma instrução switch dentro de um subprocedimento ou como uma função definida pelo usuário no VBA.
O switch no VBA avalia uma expressão e fornece a saída com base nas condições para essa expressão. Nas instruções de caso de seleção, definimos casos em que, se tivermos um caso, o resultado deve ser be assim por diante. Isso exigia a criação de muitos códigos para a instrução de caso de seleção, mas no Switch, podemos mesclar todas as condições e expressões em uma instrução em vez de ter várias instruções de caso.
Sintaxe da instrução Switch
O switch calcula a primeira expressão e, se o valor for verdadeiro, ele retornará o valor para a expressão e, se o valor da expressão 1 não for verdadeiro, continuará com o mesmo cálculo da expressão 2 e, se o resultado for verdadeiro, o valor 2 será exibido, mas se a expressão retornada for falsa, o comutador passa para outra expressão.
Então, o que acontece se nenhuma das expressões for verdadeira e todas elas forem retornadas como False, obteremos um erro de tempo de execução nesse caso, a menos que tenhamos um tratamento preventivo de erros para esse cenário.
Como usar a instrução Switch no Excel VBA?
Abaixo estão os diferentes exemplos para usar a instrução VBA Switch no Excel.
Você pode fazer o download deste modelo do Excel VBA Switch aqui - Modelo do Excel VBA SwitchSwitch VBA - Exemplo # 1
Vamos começar com o exemplo básico para ter uma idéia da declaração do switch VBA. Receberemos a entrada do usuário e, com base nessa entrada, definiremos a saída. Receberemos a entrada do número 1 ao 5 e, com base na entrada, teremos resultados predefinidos, mas se o usuário digitar qualquer número diferente do nosso intervalo, teremos que lidar com esse erro.
Siga as etapas abaixo para usar a instrução Switch no Excel VBA:
Etapa 1: na guia visual basic, insira o editor de VB na guia do desenvolvedor.
Etapa 2: Na janela Editor do VB, insira um novo módulo na guia Inserir.
Etapa 3: declarar um novo subprocedimento no novo módulo recém-criado.
Código:
Subamostra () End Sub
Etapa 4: Declare duas variáveis A e B, uma como número inteiro e outra como uma sequência.
Código:
Sub Amostra () Dim A Como Inteiro Dim B Como String End Sub
Etapa 5: na variável A, armazene o valor fornecido pelo usuário usando a função da caixa de entrada.
Código:
Subamostra () Dim A Como Inteiro Dim B Como String A = InputBox ("Digite um valor", "o valor deve estar entre 1 e 5") End Sub
Etapa 6: Agora, na variável B, usaremos uma instrução de chave VBA para avaliar o resultado conforme a entrada fornecida pelo usuário.
Código:
Subamostra () Dim A Como Inteiro Dim B Como String A = InputBox ("Digite um valor", "o valor deve estar entre 1 e 5") B = Alternar (A = 1, "Um", A = 2, "Dois ", A = 3, " Três ", A = 4, " Quatro ", A = 5, " Cinco ") End Sub
Etapa 5: Exiba o valor armazenado em B usando a função MSGBOX.
Código:
Subamostra () Dim A Como Inteiro Dim B Como String A = InputBox ("Digite um valor", "o valor deve estar entre 1 e 5") B = Alternar (A = 1, "Um", A = 2, "Dois ", A = 3, " Três ", A = 4, " Quatro ", A = 5, " Cinco ") MsgBox B End Sub
Etapa 6: execute o código acima pressionando a tecla F5 e ele nos pede para inserir um número inteiro. Forneça um número 3 e pressione ok para ver o resultado.
Etapa 7: Agora, execute novamente o código e digite o número 6 e veja o resultado que obtemos.
Recebemos o erro de tempo de execução, pois em nossa instrução switch não há uma expressão para definir 6. Portanto, nesses cenários, precisamos ter um tratamento preventivo de erros.
Etapa 8: para superar esse erro de tempo de execução, declare outra variável Var como Variant.
Código:
Subamostra () Dim A Como Inteiro Dim B Como String Dim var Como Variante A = InputBox ("Digite um valor", "o valor deve estar entre 1 e 5") B = Alternar (A = 1, "One", A = 2, "Dois", A = 3, "Três", A = 4, "Quatro", A = 5, "Cinco") MsgBox B End Sub
Etapa 9: Antes de nossa instrução switch, use a instrução on error goto para que, se o código encontrar um erro, ele saiba para onde ir.
Código:
Subamostra () Dim A Como Inteiro Dim B Como String Dim var Como Variante A = InputBox ("Digite um valor", "o valor deve estar entre 1 a 5") Em erro GoTo var B = Switch (A = 1, "One ", A = 2, " Dois ", A = 3, " Três ", A = 4, " Quatro ", A = 5, " Cinco ") MsgBox B End Sub
Etapa 10: agora defina o que acontecerá se o código encontrar um erro,
Código:
Subamostra () Dim A Como Inteiro Dim B Como String Dim var Como Variante A = InputBox ("Digite um valor", "o valor deve estar entre 1 e 5") Em erro GoTo var B = Switch (A = 1, "One ", A = 2, " Dois ", A = 3, " Três ", A = 4, " Quatro ", A = 5, " Cinco ") MsgBox B var: MsgBox" Você digitou um número inválido "Resume Next End Sub
Etapa 11: Agora vamos executar o código novamente pressionando F5 ou clicando no botão Play e insira o valor 6 e, em seguida, pressione ok para ver o resultado final, caso a instrução switch seja encontrada com erro.
Switch VBA - Exemplo # 2
Neste exemplo, tenho dados na folha 1, que contém o nome de alguns filmes e a duração do tempo em minutos. Com base na duração que quero definir, o filme é longo ou super longo. Veja os dados abaixo.
Siga as etapas abaixo para usar a opção Switch no Excel VBA:
Etapa 1: Vamos começar no mesmo módulo e começar definindo outro subprocedimento da seguinte maneira.
Sub Amostra1 () End Sub
Etapa 2: declarar duas variáveis A e B, uma como número inteiro, outra como String, da seguinte maneira:
Sub Amostra1 () Dim A Como Inteiro Dim B Como String End Sub
Etapa 3: Agora, na variável A, vamos armazenar o valor da duração do filme para qualquer um dos filmes.
Sub Amostra1 () Dim A Como Inteiro Dim B Como String A = Faixa ("A3"). Deslocamento (0, 1) .Value End Sub
Etapa 4: Agora, na variável B, vamos usar uma instrução de comutador VBA para definir qual seria o cenário para cada duração do filme.
Subamostra1 () Dim A Como Inteiro Dim B Como String A = Faixa ("A3"). Deslocamento (0, 1) .Valor B = Chave (A <= 70, "Muito Curto", A <= 100, "Curto ", A <= 120, " Longo ", A <= 150, " Muito longo ") End Sub
Etapa 5: Agora, e se o valor for maior que 180, devemos ter outro manipulador de erros aqui ou podemos simplesmente escrever outra expressão como True, Value. Como todos os outros valores serão retornados, o código falso executará essa expressão.
Subamostra1 () Dim A Como Inteiro Dim B Como String A = Faixa ("A3"). Deslocamento (0, 1) .Valor B = Chave (A <= 70, "Muito Curto", A <= 100, "Curto ", A <= 120, " Longo ", A <= 150, " Muito longo ", Verdadeiro, " Aborrecido ") End Sub
Etapa 6: Exiba o valor de B usando a função msgbox.
Subamostra1 () Dim A Como Inteiro Dim B Como String A = Faixa ("A3"). Deslocamento (0, 1) .Valor B = Chave (A <= 70, "Muito Curto", A <= 100, "Curto ", A <= 120, " Longo ", A <= 150, " Muito longo ", Verdadeiro, " Aborrecido ") MsgBox B End Sub
Etapa 7: execute o código pressionando a tecla F5 ou clicando no botão Play e veja a saída.
A célula A3 possui o filme 2, cujo comprimento era 100, portanto, a saída é tão curta.
Comutador VBA - Exemplo # 3
Vamos usar a instrução switch para criar uma função definida pelo usuário para o exemplo acima, para que possamos usá-la em nossa planilha sempre que necessário.
Siga as etapas abaixo para usar a instrução Switch no Excel VBA:
Etapa 1: no mesmo módulo, declare uma função chamada como comprimento do filme.
Função FilmLength (Comprimento Como Inteiro) Como Função Final de String
Etapa 2: agora use uma instrução VBA Switch para definir os parâmetros com base no comprimento da seguinte maneira:
Função FilmLength (Leng Como Inteiro) Como String FilmLength = Alternar (Leng <= 70, "Muito Curto", Leng <= 100, "Curto", Leng <= 120, "Longo", Leng <= 150, "Muito Longo" Função Final, Verdadeira, "Chata")
Etapa 3: agora vamos para a planilha onde tínhamos nossos dados, digite = FilmLength (
Etapa 4: Podemos ver nossa função fornecer um argumento como valores na célula B2.
Etapa 5: Após aplicar a fórmula, pressione enter.
Etapa 6: Agora arraste a função para a célula C10 e veja o resultado.
Coisas para lembrar
- A função Switch avalia a expressão nela. Se a primeira expressão for avaliada como verdadeira, ela não avaliará as outras expressões.
- Se nenhuma das expressões for verdadeira, ela retornará um erro em tempo de execução.
- Precisamos ter um manipulador de erro na instrução switch ou expressão para que, se toda expressão for retornada false, não encontraremos um erro em tempo de execução.
- Uma opção é semelhante à instrução de seleção de caso.
Artigos recomendados
Este é um guia para o VBA Switch. Aqui, discuta como usar a instrução switch no Excel VBA, juntamente com alguns exemplos práticos e o modelo do Excel para download. Você também pode consultar nossos outros artigos sugeridos -
- Uso da função VBA InStr
- Função SWITCH do Excel
- Número aleatório VBA
- Função CONCATENATE no Excel