As utilizações do VBA são sempre incríveis. Podemos fazer verdadeiras operações complexas conhecendo bem os seus atalhos. Para isso, é importante que tenhamos uma base sólida construída. E para isso, é fundamental que conheçamos as principais estruturas.
No artigo de hoje reforçaremos um pouco mais sobre a estrutura FOR e a estrutura IF, por meio de um exemplo simples.
O exemplo
Imagine o material da figura 1. Trata-se de uma relação de itens, com os códigos colocados na coluna A de uma planilha Excel. Note que temos algumas células que estão sem o código. É o caso das células A9 e A14 (no caso, vamos partir da premissa que a última célula preenchida é a A18, logo, células vazias abaixo desta não nos interessam).
É possível identificar qual a primeira célula vazia de um intervalo? Ou seja, é possível apontarmos, via código, que considerando a coluna A, a sua célula 9 não está preenchida?
Sim, é possível. Faremos essa tarefa com VBA e reforçaremos o conhecimento das principais estruturas, conforme citado na introdução.
O racional
Quando temos que criar um código em VBA, é bastante interessante que deixemos claro o que o programa terá que fazer, antes mesmo do início do código. Isso faz com que tenhamos mais clareza no momento da execução. Em palavras técnicas, estamos tratando de um algoritmo.
Em resumo, devemos fazer um código que faça um procedimento simples:
- Identifica qual a última linha preenchida a coluna A
- Da primeira linha até a última linha, verifica se a coluna A está preenchida
- No caso de encontrar uma linha sem preenchimento, registra qual a linha em uma célula específica e para os procedimentos
A visão do modelo está bastante pragmática e direto ao ponto. De qualquer forma, é isso que precisamos garantir para que o código funcione. Faça sempre isso nas suas interações com VBA.
Construindo o código
Abra o VBA e crie um módulo. Isso é feito apertando Alt + F11 (para abrir o VBA) e indo em Inserir > Módulo (para criar o módulo). Uma “página” em branco se abrirá.
Como faremos um procedimento, vamos abrir uma Sub. Nossa Sub se chamará “Encontra_Célula_Vazia”. Logo, digite na primeira linha: Sub Encontra_Célula_Vazia. Aperte Enter e o fechamento da Sub se preencherá automaticamente, com o End Sub. A figura 2 mostra o código até aqui.
Voltando no nosso “algoritmo”, primeiro precisamos encontrar qual a última linha preenchida na coluna A. Isso é fácil se utilizarmos a ferramenta End(xlUp).
Para utilizá-la, vamos declarar uma variável chamada lin_fin como Double. Isso é feito incluindo a linha Dim lin_fin As Double. O valor de lin_fin será:
lin_fin = Sheets(“Produtos”).Range(“A1048576”).End(xlUp).Row
O que isso significa?
Caso você seja bom de atalhos no Excel, conhece o poder de se usar Ctrl + setas de direção. Ctrl + ↑, por exemplo, encontra a primeira célula preenchida, para cima. O mesmo ocorre com as outras direções. Caso não conheça, faça o teste.
O código de lin_fin faz exatamente esse procedimento. Significa que o código irá na aba Produtos, célula A1048576 e irá para cima por meio do comando End (xlUp). O trecho de “.Row” apenas significa que, dessa nova linha selecionada, vamos registrar qual o número de sua linha. Conforme você pode notar na figura 1, a última linha preenchida é a de número 18. É esse valor que o lin_fin deve armazenar.
A figura 3 traz o código até então.
A estrutura de repetição
Consultando o nosso algoritmo, notamos que agora é o momento em que verificamos, da primeira até a última linha preenchida, se a coluna A está preenchida. Para essa maravilhosa tarefa lançaremos mão da estrutura For. Além disso, é para verificar se uma célula está preenchida, usaremos a estrutura If.
Para toda essa etapa, incluiremos o código abaixo.
For i = 1 To lin_fin
If Sheets(“Produtos”).Range(“A” & i) = “” Then
Sheets(“Produtos”).Range(“F2”) = i
Exit For
End If
Next i
A figura 4 ilustra o código, já completo, agora com o trecho acima.
Entenda o código:
- For i = 1 To lin_fin e Next i: essa é a estrutura de repetição. Em outras palavras, é uma estrutura que levará o i de 1 até lin_fin. Tudo que estiver dentro da estrutura, terá o i substituído pelo número em questão e fará os procedimentos com aquele número. Chegando no fim dos procedimentos de um determinado i, ele seguirá para o i seguinte, até atingir lin_fin. Por exemplo, o procedimento começa com i=1. Em Sheets(“Produtos”).Range(“A” & i), então, teremos Sheets(“Produtos”).Range(“A1”). Terminada a etapa com 1, seguiremos com 2, 3, 4, e assim até atingir 18, que é o valor de lin_fin
- If e Then e End If: essa estrutura verificará uma determinada afirmação. Caso a afirmação seja positiva, seguirá com o conteúdo após o Then. Em outras palavras, queremos verificar se as células A1, A2, A3, etc… são iguais a vazio (“”). Caso seja, entraremos no conteúdo entre Then e End If. Caso não seja, nenhum procedimento é executado e o código segue.
Note que caso a condição seja atendida, faremos um procedimento. Esse procedimento é marcado por duas linhas:
- Sheets(“Produtos”).Range(“F2”) = i: escolhemos a célula F2 da aba Produtos para registrar qual a primeira vazia. Quando a condição do If for atendida, colocaremos nessa célula o valor de i. Como estamos testando linha a linha variando o i, significa que se atendemos à condição de entrada do If, significa que a linha em questão naquele momento (ou seja, i) será a linha com o conteúdo vazio
- Exit For: comando que interrompe a execução do For. Afinal, se já encontramos a primeira linha vazia, por qual motivo continuaríamos?
A figura 5 mostra a célula F2 preenchida, após a execução do código.
Resumo
Caso você altere o preenchimento das células da coluna A e rode novamente o código, devemos ter outro valor na célula F2. Caso você preencha todos os campos, da primeira até a última linha preenchida, o código nunca entrará no “If” e assim, consequentemente, não teremos mudanças na célula F2.
Com este simples código, abrimos ainda mais nossa visão sobre a importância do For. Sua utilização é de extrema importância para tarefas repetitivas. Aquele seu compromisso diário extremamente repetitivo pode contar com o apoio do For para deixar seu dia mais leve. Além disso, o If é fundamental para direcionarmos o programa a tomar decisões que nós poderíamos tomar.
Pense nisso! Pegue aquela sua tarefa repetitiva, monte um passo a passo no algoritmo como fizemos e pense como poderia usar as estruturas For e If para deixa-lo automático! É possível fazer isso!
Por fim, quem leu este artigo também se interessou pelos artigos abaixo! Clique para saber mais!
Quer aprender mais?
Assim, encerramos o nosso artigo! Hoje você aprendeu um código para encontrar a primeira célula vazia de uma relação, usando o VBA!
Ainda assim, você acredita que pode saber mais de Excel? Certamente você quer aprender Excel aprendendo o que realmente interessa! Dessa forma, montamos o Curso Excel Faixa Rápida para te repassar de forma organizada o que realmente você utilizará! Conheça mais detalhes clicando aqui!