Blog

Postado em em 1 de janeiro de 2021

Evento Change VBA: Atualizando o Valor do Produto Automaticamente

Evento Change VBA

Vou te mostrar como utilizar o Evento Change VBA para sempre que o produto for alterado, seu valor ser atualizado automaticamente.

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:

Estamos na parte de transações do nosso formulário, e será nele que trabalharemos nessa aula de hoje. Essa é a décima primeira 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.

Nessa aula vamos:

  • Configurar os valores do produto na parte de transações, para que ele mostre valores de preço (venda) e custo (compra) respectivos de cada produto do estoque

Como usar o Evento Change VBA para atualizar os valores dos produtos?

O que queremos fazer é atrelar um código funcional ao fato de mudarmos a caixa de produto e a caixa de tipo (compra ou venda). Então, para fazer modificações necessárias, teremos que:

  • Abrir o ambiente do VBA, com Alt(+Fn)+F11
  • Procurar pelo FormularioControleEstoque e clicar duas vezes nele
  • Dar duplo clique na caixa_produto para criar um evento caixa_produto_Change
  • Mudar o nome da caixa de valor de TextBox2 para caixa_valor
  • Inserir o código abaixo
Private Sub caixa_produto_Change()
If caixa_tipo.Value = "" Then
    caixa_valor.Value = ""
    Exit Sub
End If
If caixa_tipo.Value = "Compra" Then
    caixa_valor.Value = Format(Sheets("Controle_de_Produtos").Range("B:B").Find(caixa_produto.Value).Offset(0, 1).Value, "R$ #,##0.00")
Else
    caixa_valor.Value = Format(Sheets("Controle_de_Produtos").Range("B:B").Find(caixa_produto.Value).Offset(0, 2).Value, "R$ #,##0.00")
End If
End Sub

Explicação:

Se a caixa de tipo estiver vazia, a caixa de valor será esvaziada também, para não ficar nenhum valor de resquício, e a macro se encerrará sem fazer mais nada.

Com a caixa_tipo preenchida, precisaremos buscar o produto que esteja selecionado na caixa_produto, e o preço de venda ou de compra associado a ele, através da função Find VBA.

Caso esteja selecionado compra na caixa_tipo, na caixa_valor ficará escrito o valor imediatamente a direita (Offset VBA de 1 célula para a direita) do valor encontrado na aba “Controle_de_Produtos” (célula da coluna ao lado da célula encontrada)

Caso esteja selecionado venda na caixa_tipo, na caixa_valor ficará escrito o valor duas células da coluna ao lado do valor encontrado na aba “Controle_de_Produtos” (célula a duas colunas ao lado da célula encontrada: Offset VBA de 2 células para a direita)

Ambos os valores de compra ou venda serão formatados como moeda, ao serem encontrados corretamente, na primeira ou segunda colunas ao lado do valor procurado (que estará escrito na caixa_tipo).

Caso não recebam a função Format VBA, eles apareceriam como texto (1,25) e não como moeda (R$ 1,25), como queremos.

OBS: Precisamos copiar essa macro inteira e atrelar a um evento change VBA também na caixa_tipo, para que qualquer mudança dela (caixa_tipo) faça com que esses valores na caixa_valor também mudem.

Se não fizermos isso, a caixa_tipo só seria alterada pelas mudanças na caixa_produto. Por exemplo, se fosse selecionado um produto, e por padrão estivesse “Compra” na caixa_tipo, teríamos o valor de compra final. Mas, se mudássemos para “Venda” na caixa_tipo, o valor não se alteraria, como pode ser observado no vídeo.

Portanto, o que precisamos é de uma nova macro de evento change (Private Sub caixa_tipo()) exatamente igual à macro acima, copiaremos esse código e colaremos nela (sem a primeira linha, é claro).

Conclusão

Cumprimos mais uma etapa para alcançar o formulário de controle de estoque completo no Excel!

Hoje aprendemos mais aplicações de evento change VBA, e podemos aplicá-los diversas vezes no formulário para que as informações fiquem atualizadas. Isso é fundamental para o funcionamento da ferramenta, e tem inúmeras aplicações não só nesse exemplo.

Ficamos por aqui e até o próximo post! Fique ligado no nosso canal do Youtube para mais conteúdo de VBA e Excel! 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!