Blog

Postado em em 30 de outubro de 2020

For VBA: Como Utilizar a Estrutura de Repetição For no VBA

Nessa publicação vamos ver como utilizar estruturas de repetição e, para isso, vamos focar em exemplos e aplicações da estrutura For VBA!

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo!

Para receber a planilha que usamos na aula no seu e-mail, preencha:

Como usar a Estrutura de Repetição For VBA para excluir registros de venda

Nessa nossa décima segunda aula da Série Formulário de Vendas no VBA, mais especificamente falando do segundo formulário, o de exclusão de vendas, iremos aprender como usar a estrutura de repetição for para que façamos comparações com as linhas da nossa aba de interesse para fazer diversas comparações e possíveis diversas exclusões nessa aba.

Na aula passada, vimos como fazer essas comparações através da estrutura If, que você pode conferir nesse post.

Observe abaixo a estrutura do nosso código, que será o código disparado quando apertamos o nosso botão OK (verde) do formulário:

Private Sub CommandButton1_Click()

valor_nf = caixa_nf.Value + 0

ult_linha = Range("A1048576").End(xlUp).Row

For linha = 2 To ult_linha

    If Cells(linha, 2).Value = valor_nf Then

        Range(Cells(linha, 1), Cells(linha, 8)).Delete shift:=xlUp
        linha = linha - 1

    End If

Next

End Sub


Explicação do código acima:

Atribuiremos à variável “valor_nf” o valor que vamos inserir na “caixa_nf”. Ela conterá o valor da nossa NF a ser excluída e será nosso parâmetro de comparação.

OBS: Observe que colocamos um +0 nessa linha de código, porque fazendo isso, o VBA irá converter isso para um número, porque por padrão ele entende o que vem da caixa_nf como um texto, porque ela é uma caixa de texto.

Descobriremos qual é a última linha dessa aba indo na última célula da coluna A, a A1048576, iremos dar um Ctrl seta pra cima, e chegaremos à última linha preenchida. Esse valor será atribuído à variável “ult_linha” e será usado em seguida.

Em seguida, partiremos para a nossa estrutura de repetição com uma condição dentro dela.

Iremos andar da linha 2 até a última linha da aba, que será dada pela variável “ult_linha”. Isso significa que ele repetirá a comparação com condição para cada linha, da linha 2 até a última linha e irá parar de fazer a comparação quando fizer a comparação referente à “ult_linha”.

Nós queremos: se o valor da célula  da coluna B (linha variável de 2 até a última linha) for igual ao valor da variável “valor_nf”, queremos que o VBA faça a exclusão do intervalo que vai da coluna 1 até a coluna 8, da linha em questão em que a comparação for verdadeira.

O “shift:=xlUp” significa que ele irá fazer com que os dados debaixo desse intervalo excluído subam para preencher o “vazio” que ficará ao excluir esse “intervalo” de dados preenchidos, que corresponde a uma “linha” da nossa tabela.

Ao excluir uma linha, e fazer o shift:=xlUp”, afetaremos a contagem do nosso For, porque a linha abaixo “subirá”. Portanto, toda vez que tivermos uma exclusão, retiraremos uma unidade da nossa variável auxiliar “linha” para compensar essa “subida”, fazendo com que a estrutura de repetição não seja sabotada pelo procedimento de deslocamento de células.

Após isso, a estrutura de repetição irá acrescentar uma unidade à variável auxiliar “linha”, “descerá” uma linha e fará comparações, repetidamente, até terminarem os registros. Assim que terminar, ele terá excluído todos os registros em que a NF alvo estavam. E termina a nossa sub.

Com a estrutura de repetição no VBA (Loop For Next no VBA) do “For” conseguimos fazer com que nosso código faça diversas iterações de um ponto inicial até um ponto final, ou seja, da primeira linha da planilha até a última, e podendo realizar alguma ação. No nosso caso é uma comparação, e talvez uma exclusão, caso atenda a nosso requisito (NF a ser excluída).

Com isso, fazemos com que a aba esteja livre dessa NF a ser excluída logo quando damos o comando, e nosso propósito se cumpre. Na próxima aula iremos aprender a fazer isso para todas as abas também. Fique ligado no nosso canal do Youtube para mais conteúdo de VBA!

Hashtag Treinamentos

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


Quer aprender mais sobre VBA com um Minicurso Gratuito?


Quer sair do zero em Python e virar uma referência na sua empresa? Matricule-se agora mesmo no Python Impressionador!