Blog

Postado em em 29 de outubro de 2019

Do Until VBA – Como utilizar essa estrutura de repetição?

Nessa publicação vou te mostrar como utilizar a estrutura de repetição Do Until VBA através de um exemplo com porcentagem!

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso Canal do YouTube para mais vídeos!

Para baixar a planilha utilizada nessa aula clique aqui!

O que é a Estrutura Do Until VBA?

Essa estrutura nada mais é do que uma estrutura de repetição parecida com o For ou While, no entanto se traduzirmos essa expressão Do Until VBA seria “Faça até”, ou seja, o programa irá executar uma ação até um ponto específico, então teremos uma estrutura de repetição que ficará se repetindo até que cheguemos a esse ponto.

É importante lembrar que essa estrutura pode ter o mesmo problema da estrutura While, que é ficar em um loop infinito, ou seja, se o usuário colocar um ponto em que a repetição não possa chegar ela será repetida infinitamente, portanto é sempre bom verificar se está correto o ponto de parada, ou até mesmo acrescentar um outro ponto “extra” para que o programa possa parar depois de algumas vezes executando essa repetição.

Quando Utilizar essa Estrutura de Repetição?

Essa estrutura será utilizada sempre que o usuário tiver a necessidade de fazer alguma ação repetida até um determinado ponto, desta forma não será necessário escrever fórmulas dentro do ambiente Excel ou ter que repetir uma ação manualmente por diversas vezes.

A vantagem de não colocar fórmulas dentro do ambiente Excel é que dependendo da quantidade de células que vamos abordar pode ser que essa execução fique mais lenta e também não teremos como saber em quantas células vamos precisar inserir as fórmulas, pois se colocarmos mais dados teremos que expandir a parte das fórmulas para abranger esses dados.

Como Utilizar a Estrutura Do Until VBA?

Primeiramente vamos ver a tabela que temos para conhecer o problema que vamos resolver.

Tabela inicial para preenchermos com a porcentagem de cada produto
Tabela inicial para preenchermos com a porcentagem de cada produto

Aqui temos uma tabela com produtos, faturamento e porcentagem. Vamos fazer o cálculo de porcentagem de quanto cada um dos produtos representa do total e para isso vamos utilizar o VBA.

Agora que já conhecemos o problema vamos abrir o ambiente VBA, existem duas formas para isso, uma delas é indo até a guia Desenvolvedor e pressionando a opção Visual Basic e a outra é utilizar o atalho ALT + F11.

Guia Desenvolvedor para acessar o ambiente VBA
Guia Desenvolvedor para acessar o ambiente VBA

Caso o usuário não tenha a guia Desenvolvedor habilitada basta seguir os passos abaixo para habilitar essa guia.

Ir até a guia Arquivo e em seguida em opções. Será aberta uma janela com as opções do Excel, aqui vamos selecionar a opção Personalizar Faixa de Opções e por fim marcar a opção Desenvolvedor.

Menu de opções para habilitar a guia Desenvolvedor
Menu de opções para habilitar a guia Desenvolvedor

Depois basta pressionar ok que a guia será habilitada.

Vamos agora entrar no Ambiente VBA com qualquer uma das duas opções que foram apresentadas, as duas vão levar ao mesmo ambiente.

Abrindo o ambiente VBA com o código já escrito
Abrindo o ambiente VBA com o código já escrito

Aqui temos um código que já foi escrito e está gravado na planilha que foi baixada para seguir a aula. Abaixo vamos ter uma breve explicação do código.

Sub – É o que utilizamos para inicializar a macro, é uma Sub-rotina e logo em seguida o nome dessa macro, geralmente colocamos um nome relacionado ao que estamos fazendo para que fique mais intuitivo na hora de utilizar a macro, pois com o nome já vamos saber do que se trata e não vamos precisar analisar o código. Assim que pressionar Enter o programa vai colocar o () e vai criar o nome End Sub que significa o final da nossa rotina.

Logo abaixo temos linha = 2 e soma = 0, são duas variáveis, ou seja, são nomes que armazenam valores, então estamos atribuindo valores a essas duas variáveis. As variáveis podem ter qualquer nome, geralmente utilizamos nomes relacionados aos dados que elas vão armazenar. O símbolo de = significa que estamos atribuindo, ou seja, estamos atribuindo a variável linha o valor 2.

Linha = 2 – Esse será o valor inicial da variável, pois os dados em que vamos preencher começam na linha 2. Não começamos da linha 1, pois ela contém o nosso cabeçalho e não queremos preencher ele com nada para não apagar a informação da coluna.

O próximo bloco que vai do Do Until VBA até o Loop é onde vamos obter a soma dos valores para que possamos ter o total para calcular a porcentagem, pois precisamos dividir o valor do produto pelo total. Essa estrutura começa com Do Until VBA e logo ao lado temos a verificação que será feita para que essa estrutura pare de se repetir, ou seja, se essa condição for verdadeira vamos parar a execução.

Cells(linha,coluna) – Essa estrutura de célula possui dois argumentos, o primeiro representa a linha em que essa célula se encontra o segundo é referente a coluna.

Temos a seguinte condição Cells(linha,1) = “”, aqui como temos uma variável chamada linha o VBA entende que o valor dela será utilizado onde tiver o nome dela. Então inicialmente teremos Cells(2,1) = “”, isso é uma comparação para verificar se a célula de linha 2 e coluna 1 está vazia (representada por duas aspas duplas), ou seja, é para verificarmos se temos um produto naquela célula. Então se tivermos um produto a condição será falsa então o VBA vai executar o que está dentro da função Do Until VBA, que são dois códigos.

O primeiro código é soma = soma + Cells(linha,2), isso quer dizer que vamos atribuir a variável soma o valor atual dela mais o valor que se encontra na célula de linha 2 e coluna 2 (que seria a célula B2). Então como o nosso valor inicial de soma é zero estaremos atribuindo o valor da célula B2 a ela.

O segundo código é a atribuição a linha do valor atual dela + 1, ou seja, agora a nossa variável linha terá o valor 3. E a linha seguinte é Loop que significa que vamos voltar ao Do Until VBA para fazer a verificação novamente até que a condição seja verdadeira. Então a nossa linha sempre será acrescida de 1 e o valor de soma sempre irá pegar o valor do produto daquela linha até que não tenhamos mais produtos.

Ao terminar essa estrutura de repetição vamos ter o valor total da soma de todos os itens da tabela independente de quantos itens temos, ou seja, neste caso se acrescentarmos mais produtos na tabela o programa irá calcular normalmente incluindo eles, pois só vai parar quando a célula for vazia, ou seja, quando não tiver mais produtos.

Quando a condição for verdadeira o VBA vai pular tudo que está dentro da estrutura e vai direto para a linha após o Loop. Aqui temos novamente a atribuição de valor 2 a variável linha, porque a variável estava sendo modificada até chegar no último produto da lista.

Logo abaixo temos outra estrutura de repetição, mas essa será para efetuar o cálculo da porcentagem de cada produto. Para isso temos: Cells(linha,3) = Cells(linha,2)/soma aqui vamos ter que a célula de linha 2 e coluna 3 (célula C2) irá receber o valor da célula de linha 2 e coluna 2 (célula B2) dividido pela soma, então vamos pegar o valor do produto, dividir pelo total e atribuir a célula destinada a porcentagem.

Desta forma a estrutura ficará se repetindo até que não se encontre mais produtos igual a primeira estrutura de repetição, ou seja, vamos indo de linha por linha até que não tenham mais produtos para efetuar o cálculo.

Aqui já terminamos o código para preencher toda a tabela, mas temos mais 4 linhas para complementar o código que serão responsáveis por copiar e colar a formatação das células para os novos produtos que foram adicionados, pois ao adicioná-los eles podem não ter a mesma formatação e não deixar a tabela visualmente agradável, por isso vamos utilizar essas opções.

Código para colar a formatação nas outras células
Código para colar a formatação nas outras células

Aprendemos que a estrutura Cells consegue selecionar uma célula que informamos, mas temos outra possibilidade que é utilizando a estrutura Range, com ela podemos selecionar célula ou um intervalo de células. E o melhor dessa estrutura é que podemos colocar o nome da célula para facilitar ao invés de ter que colocar o número da linha e da coluna.

Na primeira linha temos a seleção do Range da célula de A2 até (que é representado pelos 🙂 a célula C2, que é a linha dos primeiros produtos, em seguida temos .Copy que significa que vamos copiar o conteúdo anterior ao ponto, ou seja, vamos copiar o que está nas células de A2 até C2.

Na linha seguinte temos a opção .PasteSpecial Paste:=xlPasteFormats que significa que vamos colar especial os formatos no range anterior ao ponto que vai dá célula A2 até a célula C e o número da linha que temos (então se tivermos 20 produtos vamos até C20). Isso é para que todas as células fiquem com o mesmo formato inclusive as que forem acrescentadas depois do cálculo.

Na terceira linha temos Application.CutCopyMode = False é simplesmente para cancelarmos a opção de cópia, pois quando vamos copiar um item o Excel deixa esse item selecionado com um tracejado que fica se movendo, então vamos utilizar esse código para retirar essa seleção.

Por fim temos o código Range(“A1”).select que é simplesmente para selecionarmos a célula A1, pois ao terminar de copiar teríamos toda a tabela selecionada, então para que isso não ocorra vamos selecionar a célula A1 que é o início da tabela.

Agora finalmente podemos executar o código, podemos pressionar o atalho F5 ou clicar no botão de play dentro do ambiente VBA.

Menu onde temos a opção Play para executar o código (atalho F5)
Menu onde temos a opção Play para executar o código (atalho F5)

Feito isso o VBA irá rodar o código e efetuar tudo que está dentro dele seguindo a lógica do código, depois basta voltar ao ambiente Excel para verificar os resultados.

Resultado após rodar o código em VBA
Resultado após rodar o código em VBA

Agora temos toda a coluna de percentual completa preenchida como foi descrito. Caso o usuário acrescente mais produtos e valores o código terá que ser executado novamente para que os cálculos sejam refeitos.

Acrescentando mais dois produtos na tabela (estão sem formatação)
Acrescentando mais dois produtos na tabela (estão sem formatação)

Aqui adicionamos mais dois produtos a tabela, então vamos voltar ao ambiente VBA e executar novamente o código para verificar o resultado.

Resultado após executar o código novamente (os 2 produtos foram calculados e estão com a formatação)
Resultado após executar o código novamente (os 2 produtos foram calculados e estão com a formatação)

Toda a planilha foi preenchida organizando as porcentagens, pois adicionamos mais produtos, então as porcentagens dos outros itens serão modificadas e os formatos foram inseridos nos dois últimos produtos que foram adicionados.

Caso você ainda queira aprender mais sobre o Do Until no VBA nós temos outro vídeo que pode te ajudar com isso com um exemplo diferente!

Conclusão

Nessa aula eu te mostrei como utilizar a estrutura de repetição Do Until no VBA para que você consiga automatizar alguns processos no Excel.

Dessa forma não vai precisar fazer essas atividades repetitivas de forma manual, principalmente quando temos uma quantidade bem grande de informações!

Hashtag Treinamentos

Para acessar outras publicações de VBA, clique aqui!


Quer aprender mais sobre VBA com um minicurso básico gratuito?

Quer sair do zero no Power BI e virar uma referência na sua empresa? Inscreva-se agora mesmo no Power BI Impressionador