Blog

Postado em em 28 de março de 2019

Função Do Until Loop – Como usar a estrutura de repetição Do Until no VBA?

Caso prefira o conteúdo de Do Until no formato de vídeo-aula clique nesse link!

O que é o Do Until?

Do Until nada mais é do que uma das diversas estruturas de repetição presentes no VBA. VBA é a sigla para Visual Basic for Applications que nada mais é do que uma linguagem de programação utilizada no pacote Office. Estruturas de repetição realizam diversas vezes uma certa instrução até que uma dada condição passe a ser verdadeira ou falsa.

Quando utilizar o Do Until?

A estrutura Do Until (do inglês Faça Até) repete algumas ações até que diga para parar ou até que chegue ao fim de alguma ação. Ela é utilizada quando temos diversos dados e queremos efetuar alguma ação com todos eles utilizando alguma restrição. Ela é muito parecida com a função While, a diferença é que ele vai executar até que a condição seja verdadeira.

No exemplo que vamos ver iremos colocar uma atividade para cada condição do tempo, se a condição for Sol iremos colocar “Ir para a praia”, se a condição for Chuva colocaremos “Ver um filme”. Portanto o IF é a tradução de inglês para SE, então se isso acontecer faremos uma ação.

Para compor esse nosso código utilizaremos a função If e também a função Do Until. Enquanto o If tem o objetivo de verificar se é sol ou chuva e retornar uma atividade o Do Until tem a função de repetir esse procedimento para toda a nossa tabela até que a condição atribuída seja verdadeira.

Então, a ideia é preencher a coluna de atividade baseado na condição do tempo. E para preencher essa coluna iremos utilizar o VBA para automatizar o processo e conhecer mais sobre a função Do Until.

Como utilizar o Do Until?

Para utilizarmos o Do Until primeiramente precisamos abrir o ambiente VBA. Temos duas formas de fazer isso: a primeira é indo até a guia desenvolvedor e clicando na opção Visual Basic e a outra forma é utilizando o atalho ALT + F11 (ALT + Fn + F11 caso a primeira opção não funcione). Feito isso irá abrir uma janela do ambiente VBA.

Para podermos escrever o nosso código é necessário criar um novo módulo, para isso basta ir na guia inserir e depois em módulo.

Feito isso temos uma aba em branco para começarmos a escrever o nosso código. O código que iremos utilizar para explicar alguns dos conceitos do VBA está logo abaixo:

Sub – Isso é para dizer ao programa que estamos começando um novo código, em seguida temos o nome do código que será utilizada e no final temos o End Sub que indica que acabamos o código.

Cells – Essa estrutura é responsável por selecionar uma célula específica. Essa estrutura precisa de dois argumentos o primeiro deles é referente a linha em que se encontra a célula e o segundo é referente a coluna em que se encontra a célula. Portanto se tivermos essa estrutura: Cells(3, 4) quer dizer que estamos selecionando uma célula que está na linha 3 e na coluna 4, ou seja, estaríamos na célula D3.

Linha – Neste caso esse nome significa uma variável, ou seja, é uma palavra que usuário coloca para receber um valor e facilitar tanto a leitura do código quanto a facilidade de alterar o valor dessa variável quando é utilizada várias vezes dentro do código.

= – Esse símbolo nos diz que o que está à esquerda dele irá receber um valor que está a direita, então se tivermos linha = 3 quer dizer que a variável linha irá receber o valor 3.

If – É a função If (traduzindo do inglês se) ela é composta por 4 partes:

A primeira parte é o If que indica o se;

A segunda é a condição que iremos testar, neste caso Cells(linha, 3) = “Sol”. Isso quer dizer se a célula da linha 3 e coluna 3 (C3) for igual a “Sol”;

A terceira parte é o Then que significa então. Isso quer dizer se aquela condição testada for verdadeira iremos entrar na função e executaremos alguma atividade;

A última parte é a ação que será executada caso a condição seja verdadeira. Neste caso é Cells(linha, 4) = “Ir para praia”, ou seja, a célula C4 irá receber o texto “Ir para praia” que é exatamente o que temos na tabela inicial para a condição de tempo ser igual a “Sol”.

Else – É o complemento da função If, ou seja, caso a condição da função If não seja verdadeira o código irá pular direto para o Else (ou seja, a ação da função If não será executada) que podemos traduzir para se não, que é o contrário do se então neste caso temos que se a célula analisada for igual a “Sol” temos a ação do If, caso contrário temos Cells(linha, 4) = “Ver um filme”, que é a condição para a “Chuva”.

Neste caso não colocamos um If para a condição de “Chuva”, pois temos apenas 2 condições, então se uma for falsa iremos executar a outra condição.

Do Until – É a função de repetição, então irá executar o que tem dentro da função até que sua condição seja verdadeira. Neste caso temos Cells(linha,2) = “ ”, ou seja, o programa irá fazer até que essa condição seja verdadeira. Como iremos começar na linha 3 coluna 2, estaremos na célula B3. E como pode se observar no código esse número de linha aumenta antes de terminar a função, então o programa vai para a próxima linha até que ela seja vazia. Isso só vai acontecer nesse primeiro exemplo quando chegarmos na célula B8.

Loop – É a indicação que ali acaba a função Do Until, então tudo entre essa função e o Loop será executado até que a condição seja verdadeira, e como temos o valor da linha sempre aumentando em uma unidade podemos assim andar pela coluna e percorrer todos os nossos dados.

Obs: No código podemos ver que antes de terminar a função Do Until temos a seguinte escrita linha = linha + 1. Isso significa que ao analisar e executar o que estava acima iremos somar 1 a nossa variável linha, ou seja, se ela começa em 3, quando executar o código uma vez ela vai para 4 e novamente será testada a condição da função até que seja verdadeira. Essa soma é feita para que possamos passar para a linha seguinte e assim analisar todos os nossos dados.

Para executar o código podemos ou clicar no botão de “play” em verde ou pressionar a tecla F5 no teclado.

Feito isso o código será executado e basta alterar para a tela do Excel e verificar o resultado.

Esse é o resultado, ele completa todas as linhas automaticamente, pois sempre verifica se a célula da coluna B e da linha analisada está vazia ou não, se não tiver ele vai fazer o procedimento para checar se é sol ou chuva e colocar a respectiva atividade. Feito isso para a linha seguinte até completar toda a tabela.

Portanto essa função é útil para quando temos uma grande quantidade de dados e queremos automatizar o processo. E o melhor não precisamos ficar sempre informando quantas linhas temos, e por consequência não temos que ficar alterando o código sempre quando formos executar. Com a condição colocada para a função Do Until nosso código já faz essa verificação sozinha e continua até que não haja mais dados a serem processados.

Então, quando chegarmos na célula B8 a condição do Do Until será verdadeira e então a função se encerra ali e vai para outra parte do código, se existir.

Temos um outro exemplo com uma maior quantidade de dados.

É utilizada a mesma condição para a coluna de atividades, no entanto temos mais dados a serem analisados. Como o código escrito não tem a necessidade de receber a quantidade de dados que temos basta rodar o mesmo código novamente e teremos o resultado para toda a tabela.

Então é uma fórmula muito útil principalmente quando há uma grande quantidade de dados a serem analisados. E da forma que foi feito não há necessidade de especificar quantas linhas tem a tabela, a nossa condição é que o conteúdo da célula seja vazio, então ao chegar no final a estrutura de repetição irá parar.

Para saber mais sobre Do Until e outros assuntos de Excel e VBA, acompanhe que vamos enviar outros posts.