Blog

Postado em em 3 de janeiro de 2021

WorksheetFunction VBA para Cadastrar Transações na Planilha

WorksheetFunction VBA

Vamos ver como utilizar as funções do Excel no VBA para cadastrarmos informações na planilha utilizando o WorksheetFunction 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:

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

  • Cadastrar transações na planilha e atualizar a lista de transações

Usando o WorksheetFunction VBA para Cadastrar as Informações na Planilha?

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
  • Mudar o nome da caixa de valor de TextBox1 para caixa_quantidade
  • Mudar o nome da caixa de valor de TextBox2 para caixa_data
  • Mudar o nome da caixa de valor de TextBox3 para caixa_id
  • Mudar propriedade Enabled da caixa_id e para a Label ID para False, para desativá-la
  • Dar duplo clique no botão “Adicionar” para criar um evento change VBA
  • Inserir o código abaixo
Private Sub CommandButton3_Click()

If caixa_produto.Value = "" Then
   MsgBox ("Preencha o nome do produto")
   Exit Sub
End If

If caixa_quantidade.Value = "" Then
   MsgBox ("Preencha a quantidade da transação")
   Exit Sub
End If

If caixa_tipo.Value = "" Then
   MsgBox ("Preencha o tipo da transação")
   Exit Sub
End If

If caixa_valor.Value = "" Then
   MsgBox ("Preencha o valor unitário da transação")
   Exit Sub
End If

If caixa_data.Value = "" Then
   MsgBox ("Preencha a data da transação")
   Exit Sub
End If

linha = Sheets("Compras_e_Vendas").Range("A1000000").End(xlUp).Row + 1

Sheets("Compras_e_Vendas").Cells(linha, 1).Value = WorksheetFunction.Max(Sheets("Compras_e_Vendas").Range("A:A")) + 1
Sheets("Compras_e_Vendas").Cells(linha, 2).Value = caixa_produto.Value
Sheets("Compras_e_Vendas").Cells(linha, 3).Value = caixa_quantidade.Value + 0
Sheets("Compras_e_Vendas").Cells(linha, 4).Value = caixa_tipo.Value
Sheets("Compras_e_Vendas").Cells(linha, 5).Value = caixa_valor.Value + 0
Sheets("Compras_e_Vendas").Cells(linha, 6).Value = CDate(caixa_data.Value)

caixa_produto.Value = ""
caixa_quantidade.Value = ""
caixa_tipo.Value = ""
caixa_valor.Value = ""
caixa_data.Value = ""

MsgBox ("Transação adicionada com sucesso")
Call atualiza_caixa_listagem_transacoes

End Sub

Explicação:

  • As cinco primeiras instruções If vão dizer respeito as caixas de produto, quantidade, tipo, valor e data estarem vazias: se uma delas estiver vazia (valor igual a “”), será exibida uma mensagem na tela respectiva sobre o que está faltando, ou seja, produto, quantidade, tipo, valor e data da transação, e o código se encerrará sem adicionar a transação no sistema.
  • Depois disso, será necessário descobrir em que linha nós vamos registrar esse produto no Excel, para servir de base para a nossa caixa de listagem. Para isso, vamos na célula A1000000 da aba de Compras_e_Vendas, e iremos até a última célula preenchida, e adicionaremos 1, para garantir que temos a linha vazia, abaixo da última preenchida. Essa linha de cadastro ficará armazenada na variável linha.
  • Após isso, vamos direcionar onde colocaremos os valores digitados no nosso formulário.
  • A célula da primeira coluna da linha de cadastro receberá o valor do ID, que será equivalente ao valor máximo (dado pela Worsheetfunction VBA de Maximização) da coluna de IDs somado em 1 unidade, para garantir que esse é o “próximo” dos que já existem ali (exemplo: se tem 5, o próximo a se cadastrar é 5 + 1 = 6).
  • A célula da segunda coluna da linha de cadastro receberá o valor que o usuário digitará na caixa de produto.
  • A célula da terceira coluna da linha de cadastro receberá o valor que o usuário digitará na caixa de quantidade. Como esse valor é um texto, somaremos zero (0) ao que for digitado para o VBA entender que isso é um número.
  • A célula da quarta coluna da linha de cadastro receberá o valor que o usuário digitará na caixa de tipo.
  • A célula da quinta coluna da linha de cadastro receberá o valor que o usuário digitará na caixa de valor. Como esse valor é um texto, somaremos zero (0) aqui também.
  • A célula da sexta coluna da linha de cadastro receberá o valor que o usuário digitará na caixa de data. Como esse valor é um texto, precisaremos converter esse valor em uma data através da função Cdate VBA para que o VBA transforme o que foi digitado (inicialmente texto) seja interpretado como data.
  • Após fazer o registro do novo produto na planilha, serão apagados os textos digitados nas caixas de produto, quantidade, tipo, valor e data, para que possam ser digitados novos valores
  • Em seguida será exibida uma mensagem na tela dizendo “Transação adicionada com sucesso”, indicando que tudo ocorreu da melhor forma.
  • Para finalizar, será chamada a macro já pronta de “atualiza_caixa_listagem_transacoes”, para que a nossa caixa de listagem com os produtos seja atualizada com o novo produto adicionado
  • E se encerra o nosso código

 

Conclusão

Cumprimos mais uma etapa para alcançar o formulário de controle de estoque completo no Excel! A etapa de hoje é bem importante porque ela é uma das principais funcionalidades do formulário, a de adicionar transações no estoque e o manter atualizado.

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!