Blog

Postado em em 9 de janeiro de 2021

Arrastar para Baixo no VBA com o método FillDown

Arrastar para Baixo no VBA

Conhece o atalho de arrastar para baixo no Excel? Utilizando o FillDown você consegue arrastar para baixo no VBA também!

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:

Essa é a décima quarta aula da nossa série de Controle de Estoque Completo no VBA, onde estaremos aprendendo a lidar com os eventos no formulário de controle de estoque, o principal. Estamos na parte de estoque disponível do nosso Formulário de Controle de Estoques, e será nele que trabalharemos nessa aula de hoje.

Nessa aula vamos:

  • Complementar o código responsável por atualizar os estoques com fórmulas do Excel e VBA associadas

Como arrastar para baixo no VBA para atualizar os Estoques?

O que queremos fazer é atualizar a caixa de listagem de estoque à esquerda do nosso formulário de estoques, usando fórmulas do Excel e VBA associados para atingir esse objetivo. Para isso, teremos que:

  • Abrir o VBA, com Alt(+Fn)+F11
  • Procurar pelo FormularioControleEstoque
  • Clicar com botão direito > Exibir código
  • Inserir o código abaixo como uma nova Sub dentro do formulário
Sub atualiza_caixa_listagem_estoque()

Sheets("Estoque").Cells.Clear

Sheets("Controle_de_Produtos").Range("B:B").Copy Sheets("Estoque").Range("A1")

Sheets("Estoque").Range("B1").Value = "Compras"
Sheets("Estoque").Range("C1").Value = "Vendas"
Sheets("Estoque").Range("D1").Value = "Estoque"

linha = Sheets("Estoque").Range("A1000000").End(xlUp).Row

If linha > 1 Then
   Sheets("Estoque").Range("B2").FormulaLocal = "=SOMASES(Compras_e_Vendas!C:C;Compras_e_Vendas!B:B;Estoque!A2;Compras_e_Vendas!D:D;""Compra"")"
   Sheets("Estoque").Range("C2").FormulaLocal = "=SOMASES(Compras_e_Vendas!C:C;Compras_e_Vendas!B:B;Estoque!A2;Compras_e_Vendas!D:D;""Venda"")"
   Sheets("Estoque").Range("D2").FormulaLocal = "=B2-C2"

    If linha > 2 Then
       Sheets("Estoque").Range("B2:D" & linha).FillDown
   End If

    Sheets("Estoque").Calculate

End If


Sheets("Estoque").UsedRange.Copy
Sheets("Estoque").UsedRange.PasteSpecial xlPasteValues
Application.CutCopyMode = False

End Sub

Explicação do código:

  • A primeira coisa a ser feita é apagar todas as informações da aba Estoque. A primeira linha do código dá um “clear” (apaga) todas as células da aba Estoque.
  • A segunda linha faz duas coisas: copia e cola informações. Copiaremos (através do copy VBA) toda a coluna de produtos (B) da aba Controle_de_Produtos, que serão coladas na aba Estoque, na célula A1.
  • Em seguida, preencheremos o resto do cabeçalho que “falta” na nossa tabela de estoque disponível. Na aba Estoque, em B1 será escrito “Compras”, em C1, “Vendas, e em D1, “Estoque”.
  • Em seguida, vamos descobrir qual a última linha preenchida da aba Estoque, e armazenar na variável “linha”
  • Com essa informação, faremos a seguinte pergunta: qual o valor de “linha”?
  • Se linha for maior do que 1, apenas preencheremos a primeira linha de produtos (segunda linha da tabela) com as fórmulas já vistas na última aula
  • E se a linha for maior do que 2 (ou seja, tiver mais do que um produto e a linha da tabela for 3 ou maior), precisaremos também arrastar as fórmulas preenchidas da segunda linha, através da propriedade FillDown VBA. O preenchimento se dará da coluna B e segunda linha (B2) até a coluna D e a última linha da tabela de produtos, dada pela variável linha. Após isso, iremos fazer o cálculo de todas as fórmulas, para garantir que as fórmulas realizarão os cálculos de forma atualizada, e se fecha a nossa segunda condição
  • Logo após, realizaremos a cópia dos valores da tabela de produtos, e serão colados de forma especial, somente os valores, para que as fórmulas sejam “retiradas” da planilha, fazendo com que ela fique mais leve (caso se tenham muitos produtos, fará diferença)
  • Ao final, desligaremos o “tracejado” de cópia do Excel com o comando “CutCopyMode” em modo falso, e se encerra a nossa sub

Conclusão

Nessa post da série aprendemos o código para atualizar o estoque disponível no nosso sistema de gestão de estoque Excel.

Para fazer isso, nesse post utilizamos do conceito de arrastar para baixo VBA, que nada mais é do que o que geralmente fazemos no Excel quando queremos aproveitar fórmulas já prontas (que fizemos na última aula da série). É o famoso duplo clique VBA.

Até o próximo post! Fique ligado no nosso canal do Youtube para mais conteúdo de Excel e VBA! Um abraço!

Hashtag Treinamentos

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


Quer aprender mais sobre VBA com um Minicurso Gratuito?


Entre os dias 1 e 4 de março vai rolar o Intensivão de Power BI!

Se você quiser participar, é só preencher seu e-mail abaixo. O evento é 100% Online e Gratuito!