Blog

Postado em em 21 de março de 2019

Função While Wend – Como usar a estrutura de repetição While no VBA?

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

O que é a Função While Wend?

A função While Wend nada mais é do que uma estrutura de repetição, ou seja, ele vai repetir algumas ações, que estão dentro da função, até que uma certa condição se torne falsa. Essa é uma função do VBA, o Visual Basic for Applications que nada mais é do que a linguagem de programação do Excel.

Quando utilizar o Função While Wend?

Essa função é utilizada quando temos diversos dados e queremos efetuar alguma ação repetitiva com todos eles utilizando alguma restrição.

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” e se a condição for Chuva colocaremos “Ver um filme”.

Para compor esse nosso código utilizaremos a função If e também a função While. Enquanto o If tem o objetivo de verificar se é sol ou chuva e retornar uma atividade o While tem a função de repetir esse procedimento para toda a nossa tabela, independente do número de linhas preenchidas.

Então, a ideia é preencher a coluna de atividade (coluna D) baseado na condição do tempo. Para preencher essa coluna utilizaremos a função While no VBA para automatizar esse processo.

Como utilizar o Função While Wend?

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, abrirá a 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 a mesma é 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á à 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) que é 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). Podemos traduzir o Else 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 a outra obrigatoriamente é verdadeira.

While – É a estrutura de repetição que vai repetir tudo que está dentro dela até que o critério utilizado passe a ser falso. Portanto, temos: Cells(linha,2) <> “”, então o Excel irá repetir o que está dentro dessa função até que a célula(linha,2) seja diferente de vazio. Isso quer dizer que quando não tivermos mais dados na célula nosso código irá parar de rodar. Isso evita que ele entre em um loop infinito.

Wend – É a indicação que ali acaba a função While, então tudo entre o While e Wend é o que será repetido se a condição da função for verdadeira.

Obs: No código podemos ver que antes de terminar a função While temos a seguinte escrita linha = linha + 1. Isso significa que ao analisar e executar o que estava acima iremos somar 1 à 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 do While até que seja falsa. 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 voltar para a tela do Excel e verificar o resultado.

Podemos ver que 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 ele passa 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. O grande diferencial é que não precisamos informar 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 While 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 até a célula B8 a condição do While será falsa e então a função se encerra ali e vai para outra parte do código, se existir.

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