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:
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:
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).
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!
Para acessar outras publicações de VBA, clique aqui!
Quer aprender mais sobre VBA com um Minicurso Gratuito?