Estruturas de controle no VBA são responsáveis por ditar o ritmo da execução de um algoritmo. Ou seja, através da utilização das estruturas de controle, as linhas de código do programa não necessariamente serão executadas de maneira linear.
Essa não linearidade permite que os programadores de VBA criem rotinas flexíveis, capazes de solucionar até mesmo os problemas mais complexos.
Neste artigo abordaremos os seguintes tópicos para sua capacitação:
Continue a leitura e aproveite para praticar com a gente!
Uma maneira simples de saber se será necessário a utilização de estruturas de controle é olhar para as variáveis que estarão contidas na macro, e se fazer as seguintes perguntas:
Se para alguma dessas perguntas você respondeu sim, você está diante da necessidade da utilização de uma estrutura de controle no VBA.
Basicamente, no Visual Basic for Applications (VBA) existem dois tipos de estruturas de controle: as que direcionam o fluxo de acordo com uma condição e as que repetem determinada tarefa por um determinado número de vezes até que também seja atendida uma condição.
Na tabela abaixo, trazemos algumas estruturas, assim como seus tipos de atuação.
A seguir, iremos te explicar o funcionamento de todas essas estruturas de controle no VBA. Fique aqui com a gente e continue aprendendo!
Esse tipo de estrutura é responsável pela realização de árvores de decisão. Pode-se fazer uma analogia com as SE, CONT.SE, SOMASE entre tantas outras.
Através desse tipo de controle, as instruções são executadas condicionalmente, ou seja, se uma condição for verdadeira, teremos uma sequência de instruções e, se for falsa, teremos outra.
A função If tem a finalidade de analisar equações lógicas colocadas no primeiro parâmetro. Caso a comparação lógica seja verdadeira, então (Then), realiza operações localizadas no segundo parâmetro.
Caso contrário (Else), realiza as operações do terceiro parâmetro.
É interessante ressaltar que o uso da palavra Else é opcional.
No caso de sua não utilização, a avaliação negativa do algoritmo será removida, neste caso implicando na saída automática do If.
Trazemos um exemplo que irá esclarecer melhor suas dúvidas, confira!
O exemplo trata-se de um controle de faturamento de um determinado supermercado.
Esse código tem a finalidade de informar se a meta mensal desejada foi alcançada ou não. Caso o valor mensal inserido seja maior ou igual a R$ 100.000,00, a meta foi alcançada.
Quando fazemos a execução da a seguinte janela é mostrada ao usuário:
Caso o valor digitado esteja dentro da meta a seguinte caixa de mensagem é mostrada:
Caso contrário, teremos a seguinte caixa de texto:
É considerada uma estrutura condicional adicional, pois ela permite a criação de mais do que apenas duas hipóteses (verdadeiro ou falso).
No VBA é possível adicionar estruturas condicionais dentro de outras estruturas condicionais.
A vantagem desse tipo de construção é a criação de instruções de controle mais complexas, onde muitos parâmetros devem ser levados em consideração.
Para inserir uma estrutura condicional dentro de outra, é utilizada a palavra reservada ElseIf. Confira o esquemático abaixo:
É muito importante ter em mente que estamos tratando de uma estrutura exclusiva, ou seja, apenas as opções consideradas como verdadeiras são executadas.
No exemplo a seguir, é demonstrada a aplicação do ElseIf no sistema de controle de pesagem de caminhões.
A pesagem máxima da carga de um caminhão deve ser de 5000 kg. Caso a balança informe um valor inferior, teremos capacidade ociosa.
Se for igual teremos toda capacidade de carga do caminhão aproveitada. Se for superior, deverá ser paga uma multa de R$ 9,50 por kg excedido.
Após executar a linhas de código, teremos a seguinte caixa de diálogo:
Vamos supor que, na pesagem, a balança registrou 5235 kg. Logo, a nossa Macro retornará a seguinte mensagem:
Essa estrutura pode ser utilizada em outros inúmeros casos, trouxemos aqui apenas uma aplicação corriqueira em um ambiente industrial.
Também conhecidas como ciclos, permitem a repetição de um dado trecho do código de execução o número de vezes que for necessário.
Existem inúmeros tipos de ciclos no VBA, no entanto, eles são diferenciados de acordo com a forma de como é controlada a execução das instruções contidas no corpo do ciclo.
De forma genérica, pode-se dizer que uma estrutura de repetição garante a execução repetida de um determinado conjunto de dados, dependendo do resultado do teste de uma determinada condição de funcionamento.
Essa estrutura é baseada na existência de um contador, que incrementa de forma automática o conteúdo da variável-contador, chamada de variável de controle do ciclo.
No início, o contador vai conter o valor inicial, que é definido pelo programador. A cada ciclo executado, o contador é incrementado, e quando essa variável atinge um determinado valor especificado, as repetições são finalizadas, fazendo com que o programa prossiga para as próximas instruções.
Confira o esquemático abaixo:
O programador deve especificar qual o valor de início e fim, ou seja, até quando a estrutura continuará funcionando e quais as instruções que o ciclo deverá repetir. O conteúdo da estrutura de controle do ciclo pode ser utilizado por meio de instruções contidas no algoritmo do ciclo, mas não deve ser modificado por essas instruções, pois isso acarretaria perdas de funcionalidades do ciclo.
Confira, a seguir, um exemplo da utilização do For...Next. Através dele, é possível o cálculo da potência de qualquer número.
Essa estrutura se assemelha muito ao For, porém, só possui uma restrição. Ela também fará a repetição das instruções entre o While (declaração da estrutura) e o Wend
(encerramento da estrutura). No entanto, somente enquanto uma condição estipulada for verdadeira. Quando a condição testada retornar "falso", a sub-rotina continua na linha após o Wend.
A seguir, temos um exemplo de uma Macro que simula uma loteria viciada. Ela informa quantas vezes o usuário jogou até inserir o número correto.
Enquanto o número sorteado não for igual ao número inserido pelo usuário, o sorteio continua, contabilizando, assim, o número de tentativas.
Essa estrutura de repetição é muito similar ao While...Wend, porém, fornece duas possibilidades extras:
Um exemplo muito comum é a utilização de um contador em planilhas para nomear o número dos presentes em um cadastro, o número de produtos no estoque, entre outras coisas.
Enquanto no If temos apenas condições de "verdadeiro" ou "falso", na estrutura Select Case podemos ampliar nosso horizonte ilimitadamente. Nele apenas especificamos o elemento a ser comparado, então, para cada caso, definimos as ações correspondentes.
Poderíamos substituir o ElseIf na macro que efetuava o controle da pesagem de caminhões pelo Select Case. Confira!
Essa com certeza pode ser considerada a estrutura de controle mais importante no VBA. Ela permite que possamos executar uma determinada instrução em todos os elementos de um conjunto de objetos, ou em todos os elementos de um Array.
Esta estrutura, quando aplicada em Arrays, não funciona para a atualização dos valores, mas somente para a extração do seu conteúdo. No entanto, quando aplicada em um conjunto de objetos, pode ser utilizada para a alteração de suas propriedades ou extração de valores.
No exemplo a seguir, é criado um array para que sejam imputados os 5 melhores clientes do dia e, em seguida, esses clientes serão mostrados em uma caixa de texto para registro.
Agora que você sabe o que é e para que servem as estruturas de controle no VBA, chegou a hora de se aperfeiçoar nessa ferramenta tão importante no contexto atual.
Para te ajudar com isso, a Voitto separou um material que vai te melhorar o seu conhecimento no assunto.
O Excel é um dos softwares mais utilizados para a transformação de dados em conteúdo e auxílio na tomada de decisões, mas também, nós o vemos sendo utilizado de forma operacional. O VBA (Visual Basic for Application) é uma linguagem de programação que, aplicada ao Excel, pode simplificar o trabalho com apenas um clique!
Aproveite a oportunidade de acessar de forma totalmente GRATUITA o curso Fundamentos de Excel com o cupom BLOG 100!
Grad. em Engenharia Mecatrônica pelo Instituto Federal do Sudeste de Minas Gerais. Atuou como bolsista no PET (Programa de Extenção Tutorial), onde desenvolveu um protótipo para o auxílio da didática de Redes Industriais, além de ministrar minicursos de Arduíno e participar de projetos sociais. Atualmente, ê integrante do projeto de iniciação científica "Sistemas de gestão de micro fontes de energia elétricas em redes BAN" e integrante da área de aerodinâmica da equipe IFly aerodesign. Possui certificação pelo SENAI, no Programa Futuros Engenheiros e também possui curso técnico em Eletromecânica com ênfase em transporte ferroviário. Formação em White Belt Lean Seis Sigma, Master em Excel, VBA Aplicado a Negócios, Gestão do Tempo e Produtividade Pessoal Produção de Conteúdo Web e de Especialista em Marketing de Conteúdo. Especialista na produção de conteúdo na área de Pesquisa e Desenvolvimento do Grupo Voitto.
Entre para nossa lista e receba conteúdos exclusivos e com prioridade.
Respeitamos sua privacidade e nunca enviaremos spam!