Controle para Empresas Aula22 – Alterando as Movimentações nas Abas
Hoje em Controle para Empresas Aula22 vamos fazer as alterações das movimentações nas abas vendas, compras e caixa.
Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo!
Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:
Essa é a vigésima segunda aula (Controle para Empresas Aula22) da nossa Série de Controle para Empresas. Nessa aula vamos aprender como alterar dados com VBA dentro do formulário.
Nessa aula nós vamos criar a macro para alterar as movimentações na aba vendas e para isso vamos checar campos em branco no formulário.
Vamos limpar campos do formulário, atualizar caixa de listagem, usar a função IF no VBA, utilizar o MsgBox que é a caixa de mensagens para passar uma informação ao usuário.
Vamos utilizar o código para encontrar a última linha preenchida, a estrutura de repetição For no VBA e os eventos no VBA para que o usuário consiga fazer essa ação através do botão.
Como você deve saber boa parte dos códigos nós já temos prontos, então vamos apenas copiá-los e fazer os devidos ajustes para criar esse código de alteração de informações!
Acessando o código do formulário
Para fazer alterações no nosso formulário já criado, precisamos primeiramente abrir o ambiente de VBA, a partir do atalho do teclado Alt(+Fn)+F11. Assim poderemos continuar o nosso formulário de controle da empresa.
Mais uma vez lembrando que, para abrir o código do nosso formulário de interesse, devemos ir com o botão direito no formulário ControleDaEmpresa > exibir código.
Controle para Empresas Aula22
Inserindo o código abaixo dentro dos códigos já existentes no formulário
1) Compras
Private Sub BtAlterarCompras_Click() Dim abaCompras As Object, abaCaixa As Object Dim ultLin As Long, i As Long
'Validando os campos do formulário If checarCamposVazios Then Exit Sub
'Checar se o ID está preenchido If CxIDCompras.Value = "" Then MsgBox "O ID a ser alterado não está preenchido. Dê um duplo clique na movimentação a ser alterada." Exit Sub
End If
Set abaCompras = Sheets("Compras") Set abaCaixa = Sheets("Caixa")
'Alterar na aba Compras ultLin = abaCompras.Range("A1000000").End(xlUp).Row
For i = 2 To ultLin
If CLng(abaCompras.Cells(i, 1).Value) = CLng(CxIDCompras.Value) Then
Vamos usar de uma estrutura de comparação If que vai verificar se a function criada anteriormente (checarCamposVazios) retornar valor verdadeiro (alguma caixa estiver vazia), nada será feito em termos de adição de dados na planilha através do botão de adicionar, porque o código será abortado através do comando Exit Sub (instrução de saída).
Por outro lado, se a resposta da function for falsa (ou seja, nenhuma caixa vazia), o botão de adicionar poderá funcionar normalmente
Vamos configurar a variável abaCompras para representar um objeto inteiro, que será nesse caso a aba do nosso arquivo em Excel “Compras”
Vamos configurar a variável abaCaixa para representar um objeto inteiro, que será nesse caso a aba do nosso arquivo em Excel “Caixa”
Vamos armazenar na variável ultLin a informação da última linha preenchida da coluna A da abaCompras
Vamos utilizar de uma estrutura de repetição do tipo For, que vai realizar ações da linha 2 até a linha dada pela variável ultLin
Se for diferente, nada será feito, e a estrutura de repetição irá para a próxima linha “i”
Se for o ID em questão, seguiremos com a alteração na planilha/sistema daquela compra
Alteração na aba Compras
O valor da célula da linha dada pela variável i, e da coluna 1 (coluna A) da aba compras vai receber o que estiver presenta na CxIDCompras, convertido para número
O valor da célula da linha dada pela variável i, e da coluna 2 (coluna B) da aba compras vai receber o que estiver presenta na CxDataPCompras, convertido para data
O valor da célula da linha dada pela variável i, e da coluna 3 (coluna C) da aba compras vai receber o que estiver presenta na CxIDataCCompras, convertido para data
O valor da célula da linha dada pela variável i, e da coluna 4 (coluna D) da aba compras vai receber o que estiver presenta na CxFornecedorCompras
O valor da célula da linha dada pela variável i, e da coluna 5 (coluna E) da aba compras vai receber o que estiver presenta na CxProdutoCompras
O valor da célula da linha dada pela variável i, e da coluna 6 (coluna F) da aba compras vai receber o que estiver presenta na CxQuantidadeCompras, convertido para número
O valor da célula da linha dada pela variável i, e da coluna 7 (coluna G) da aba compras vai receber o que estiver presenta na CxCustoTotalCompras, convertido para número
Para finalizar o processo na aba Compras vamos fazer o autoajuste das colunas para as informações inseridas, da coluna A até a coluna G
Vamos armazenar na variável ultLin (reaproveitar o nome) a informação da última linha preenchida da coluna A da abaCaixa
Vamos utilizar de uma estrutura de repetição do tipo For, que vai realizar ações da linha 2 até a linha dada pela variável ultLin
Se for diferente, nada será feito, e a estrutura de repetição irá para a próxima linha “i”
Se for o ID em questão, seguiremos com a alteração na planilha/sistema daquela compra
Alteração na aba Caixa
O valor da célula da linha dada pela variável i, e da coluna 1 (coluna A) da aba Caixa vai receber o que estiver presenta na CxIDCompras, convertido para número
O valor da célula da linha dada pela variável i, e da coluna 2 (coluna B) da aba Caixa vai receber o que estiver presenta na CxDataPCompras, convertido para data
O valor da célula da linha dada pela variável i, e da coluna 3 (coluna C) da aba Caixa vai receber o que estiver presenta na CxIDataCCompras, convertido para data
O valor da célula da linha dada pela variável i, e da coluna 4 (coluna D) da aba Caixa vai receber o que estiver presenta na CxProdutoCompras
O valor da célula da linha dada pela variável i, e da coluna 5 (coluna E) da aba Caixa vai receber o texto “Compra”
O valor da célula da linha dada pela variável i, e da coluna 6 (coluna F) da aba compras vai receber o que estiver presenta na CxContaCompras, convertido para número
O valor da célula da linha dada pela variável i, e da coluna 7 (coluna G) da aba Caixa vai receber o que estiver presenta na CxCustoTotalCompras, convertido para número e multiplicada por menos 1 (sinal de menos na frente)
O valor da célula da linha dada pela variável i, e da coluna 8 (coluna H) da aba Caixa vai receber o que estiver presenta na CxStatusCompras, convertido para número
Para finalizar o processo na aba Caixa vamos fazer o autoajuste das colunas para as informações inseridas, da coluna A até a coluna H
Com todos os cadastros feitos nas abas Compras e Caixa, vamos prosseguir chamando as macros limparCamposDoFormulario e atualizaCaixaDeListagemCompras, que vão respectivamente limpar os campos do formulário da aba Compras e atualizar a caixa de listagem da aba compras com os novos dados adicionados
Vamos apagar o conteúdo (Nothing) das variáveis abaCompras e abaCaixa, que antes armazenavam objetos
Se encerra o código
2) Vendas
Private Sub BtAlterarVendas_Click() Dim abaVendas As Object, abaCaixa As Object Dim ultLin As Long, i As Long
'Validando os campos do formulário If checarCamposVazios Then Exit Sub
'Checar se o ID está preenchido If CxIDVendas.Value = "" Then MsgBox "O ID a ser alterado não está preenchido. Dê um duplo clique na movimentação a ser alterada." Exit Sub End If
Set abaVendas = Sheets("Vendas") Set abaCaixa = Sheets("Caixa")
'Alterar na aba Vendas ultLin = abaVendas.Range("A1000000").End(xlUp).Row
For i = 2 To ultLin
If CLng(abaVendas.Cells(i, 1).Value) = CLng(CxIDVendas.Value) Then
Vamos usar de uma estrutura de comparação If que vai verificar se a function criada anteriormente (checarCamposVazios) retornar valor verdadeiro (alguma caixa estiver vazia), nada será feito em termos de adição de dados na planilha através do botão de adicionar, porque o código será abortado através do comando Exit Sub (instrução de saída).
Por outro lado, se a resposta da function for falsa (ou seja, nenhuma caixa vazia), o botão de adicionar poderá funcionar normalmente
Para validar o ID da movimentação vamos ver se a CxIDVendas está preenchida (é diferente de vazio). Caso esteja preenchida, vamos invocar nossa função checarIDDuplicado para analisar a CxIDVendas para verificar aquele ID específico. Caso ela retorne com o resultado de que o ID existe, vamos abortar a nossa sub. Caso ela retorne com resultado de que não existe, vamos prosseguir com o código para adicionar esse ID/movimentação na planilha e no formulário
Vamos configurar a variável abaVendas para representar um objeto inteiro, que será nesse caso a aba do nosso arquivo em Excel “Vendas”
Vamos configurar a variável abaCaixa para representar um objeto inteiro, que será nesse caso a aba do nosso arquivo em Excel “Caixa”
Vamos armazenar na variável ultLin a informação da última linha preenchida da coluna A da abaVendas
Vamos utilizar de uma estrutura de repetição do tipo For, que vai realizar ações da linha 2 até a linha dada pela variável ultLin
Se for diferente, nada será feito, e a estrutura de repetição irá para a próxima linha “i”
Se for o ID em questão, seguiremos com a alteração na planilha/sistema daquela venda
Alteração na aba Vendas
Vamos armazenar na variável IDMovimentacao o valor resultado da soma entre o maior valor da coluna A da abaCaixa com 1 unidade, representando sempre um ID único a ser adicionado (número 1 unidade maior do que o ID anterior)
O valor da célula da linha dada pela variável i, e da coluna 1 (coluna A) da aba Vendas vai receber o que estiver na variável IDMovimentacao
O valor da célula da linha dada pela variável i, e da coluna 2 (coluna B) da aba Vendas vai receber o que estiver presenta na CxDataPVendas, convertido para data
O valor da célula da linha dada pela variável i, e da coluna 3 (coluna C) da aba Vendas vai receber o que estiver presenta na CxDataCVendas, convertido para data
O valor da célula da linha dada pela variável i, e da coluna 4 (coluna D) da aba Vendas vai receber o que estiver presenta na CxClienteVendas
O valor da célula da linha dada pela variável i, e da coluna 5 (coluna E) da aba Vendas vai receber o que estiver presenta na CxProdutoVendas
O valor da célula da linha dada pela variável i, e da coluna 6 (coluna F) da aba Vendas vai receber o que estiver presenta na CxQuantidadeVendas, convertido para número
O valor da célula da linha dada pela variável i, e da coluna 7 (coluna G) da aba Vendas vai receber o que estiver presenta na CxValorVendaVendas, convertido para número O valor da célula da linha dada pela variável i, e da coluna 8 (coluna H) da aba Vendas vai receber o que estiver presenta na CxCustoUVendas, convertido para número
O valor da célula da linha dada pela variável i, e da coluna 9 (coluna I) da aba Vendas vai receber o que estiver presenta na CxCustoVVendas, convertido para número
Para finalizar o processo na aba Vendas vamos fazer o autoajuste das colunas para as informações inseridas, da coluna A até a coluna I
Vamos armazenar na variável ultLin (reaproveitar o nome anterior) a informação da última linha preenchida da coluna A da abaCaixa (dessa vez)
Vamos utilizar de uma estrutura de repetição do tipo For, que vai realizar ações da linha 2 até a linha dada pela variável ultLin
Se for diferente, nada será feito, e a estrutura de repetição irá para a próxima linha “i”
Se for o ID em questão, seguiremos com a alteração na planilha/sistema daquela venda
Alteração na aba Caixa
O valor da célula da linha dada pela variável i, e da coluna 1 (coluna A) da aba Caixa vai receber o que estiver presenta na IDMovimentacao, convertido para número
O valor da célula da linha dada pela variável i, e da coluna 2 (coluna B) da aba Caixa vai receber o que estiver presenta na CxDataPVendas, convertido para data
O valor da célula da linha dada pela variável i, e da coluna 3 (coluna C) da aba Caixa vai receber o que estiver presenta na CxDataCVendas, convertido para data
O valor da célula da linha dada pela variável i, e da coluna 4 (coluna D) da aba Caixa vai receber o que estiver presenta na CxProdutoVendas
O valor da célula da linha dada pela variável i, e da coluna 5 (coluna E) da aba Caixa vai receber o texto “Venda”
O valor da célula da linha dada pela variável i, e da coluna 6 (coluna F) da aba compras vai receber o que estiver presenta na CxContaVendas, convertido para número
O valor da célula da linha dada pela variável i, e da coluna 7 (coluna G) da aba Caixa vai receber o que estiver presenta na CxValorVendaVendas, convertido para número e multiplicada por menos 1 (sinal de menos na frente)
O valor da célula da linha dada pela variável i, e da coluna 8 (coluna H) da aba Caixa vai receber o que estiver presenta na CxStatusVendas, convertido para número
Para finalizar o processo na aba Caixa vamos fazer o autoajuste das colunas para as informações inseridas, da coluna A até a coluna H
Com todos os cadastros feitos nas abas Vendas e Caixa, vamos prosseguir chamando as macros limparCamposDoFormulario, atualizaCaixaDeListagemVendas e atualizaCaixaDeListagemCaixa, que vão respectivamente limpar os campos do formulário da aba Vendas, atualizar a caixa de listagem da aba Vendas, e atualizar a caixa de listagem da aba Caixa com os novos dados adicionados
Vamos apagar o conteúdo (Nothing) das variáveis abaCompras e abaCaixa, que antes armazenavam objetos
Se encerra o código
3) Caixa
Private Sub BtAlterarCaixa_Click() Dim abaVendas As Object, abaCaixa As Object, abaCompras As Object Dim ultLin As Long, i As Long
'Validando os campos do formulário If checarCamposVazios Then Exit Sub
'Checar se o ID está preenchido If CxIDCaixa.Value = "" Then MsgBox "O ID a ser alterado não está preenchido. Dê um duplo clique na movimentação a ser alterada." Exit Sub End If
Set abaVendas = Sheets("Vendas") Set abaCompras = Sheets("Compras") Set abaCaixa = Sheets("Caixa")
'Alterar na aba Compras ultLin = abaCompras.Range("A1000000").End(xlUp).Row
For i = 2 To ultLin If CLng(abaCompras.Cells(i, 1).Value) = CLng(CxIDCaixa.Value) Then
Vamos usar de uma estrutura de comparação If que vai verificar se a function criada “checarCamposVazios” vai retornar valor verdadeiro (alguma caixa estiver vazia):
Nada será feito em termos de adição de dados na planilha através do botão de adicionar, porque o código será abortado através do comando Exit Sub (instrução de saída).
Por outro lado, se a resposta da function for falsa (ou seja, nenhuma caixa vazia), o botão de adicionar poderá funcionar normalmente
Para validar o ID da movimentação vamos ver se a CxIDCaixa está preenchida (é diferente de vazio).
Caso esteja vazia, uma mensagem será exibida na tela alertando para esse fato e o código vai ser abortado através do comando Exit Sub (instrução de saída).
Caso ela esteja preenchida, vamos prosseguir com o código para adicionar esse ID/movimentação na planilha e no formulário
Vamos configurar a variável abaVendas para representar um objeto inteiro, que será nesse caso a aba do nosso arquivo em Excel “Vendas”
Vamos configurar a variável abaCompras para representar um objeto inteiro, que será nesse caso a aba do nosso arquivo em Excel “Compras”
Vamos configurar a variável abaCaixa para representar um objeto inteiro, que será nesse caso a aba do nosso arquivo em Excel “Caixa”
Vamos armazenar na variável ultLin a informação da última linha preenchida da coluna A da abaCompras
Vamos utilizar de uma estrutura de repetição do tipo For, que vai realizar ações da linha 2 até a linha dada pela variável ultLin
Se for diferente, nada será feito, e a estrutura de repetição irá para a próxima linha “i”
Se for o ID em questão, seguiremos com a alteração na planilha/sistema daquela movimentação
Alteração na aba Compras
O valor da célula da linha dada pela variável i, e da coluna 2 (coluna B) da aba Caixa vai receber o que estiver presenta na CxDataPCaixa, convertido para data
O valor da célula da linha dada pela variável i, e da coluna 3 (coluna C) da aba Caixa vai receber o que estiver presenta na CxDataCCaixa, convertido para data
O valor da célula da linha dada pela variável i, e da coluna 5 (coluna E) da aba Caixa vai receber o que estiver presenta na CxDescricaoCaixa
O valor da célula da linha dada pela variável i, e da coluna 7 (coluna G) da aba Caixa vai receber o que estiver presenta na CxValorCaixa, convertido para número e com sinal de negativo (porque foi uma compra)
vamos fazer também o autoajuste do tamanho das colunas A até G da linha dada por i da abaCompras
Vamos armazenar novamente na variável ultLin a informação da última linha preenchida da coluna A, mas agora da abaVendas
Vamos utilizar de uma estrutura de repetição do tipo For, que vai realizar ações da linha 2 até a linha dada pela variável ultLin
Se for diferente, nada será feito, e a estrutura de repetição irá para a próxima linha “i”
Se for o ID em questão, seguiremos com a alteração na planilha/sistema daquela movimentação
Alteração na aba Vendas
O valor da célula da linha dada pela variável i, e da coluna 2 (coluna B) da aba Caixa vai receber o que estiver presenta na CxDataPCaixa, convertido para data
O valor da célula da linha dada pela variável i, e da coluna 3 (coluna C) da aba Caixa vai receber o que estiver presenta na CxDataCCaixa, convertido para data
O valor da célula da linha dada pela variável i, e da coluna 5 (coluna E) da aba Caixa vai receber o que estiver presenta na CxDescricaoCaixa
O valor da célula da linha dada pela variável i, e da coluna 7 (coluna G) da aba Caixa vai receber o que estiver presenta na CxValorCaixa, convertido para número (sinal positivo porque foi uma venda entrou algo no caixa)
vamos fazer também o autoajuste do tamanho das colunas A até H da linha dada por i da abaVendas
Vamos armazenar novamente na variável ultLin a informação da última linha preenchida da coluna A, mas agora da abaCaixa
Vamos utilizar de uma estrutura de repetição do tipo For, que vai realizar ações da linha 2 até a linha dada pela variável ultLin
Se for diferente, nada será feito, e a estrutura de repetição irá para a próxima linha “i”
Se for o ID em questão, seguiremos com a alteração na planilha/sistema daquela movimentação
Alteração na aba Caixa
O valor da célula da linha dada pela variável i, e da coluna 2 (coluna B) da aba Caixa vai receber o que estiver presenta na CxDataPCaixa, convertido para data
O valor da célula da linha dada pela variável i, e da coluna 3 (coluna C) da aba Caixa vai receber o que estiver presenta na CxDataCCaixa, convertido para data
O valor da célula da linha dada pela variável i, e da coluna 4 (coluna D) da aba Caixa vai receber o que estiver presenta na CxDescricaoCaixa
O valor da célula da linha dada pela variável i, e da coluna 5 (coluna E) da aba Caixa vai receber o que estiver presenta na CxTipooCaixa
O valor da célula da linha dada pela variável i, e da coluna 6 (coluna F) da aba Caixa vai receber o que estiver presenta na CxContaCaixa
O valor da célula da linha dada pela variável i, e da coluna 7 (coluna G) da aba Caixa vai receber o que estiver presenta na CxValorCaixa, convertido para número (sinal positivo porque foi uma venda entrou algo no caixa)
O valor da célula da linha dada pela variável i, e da coluna 8 (coluna H) da aba Caixa vai receber o que estiver presenta na CxStatusCaixa
Vamos fazer também o autoajuste do tamanho das colunas A até H da linha dada por i da abaVendas
Com todos os cadastros feitos nas abas Vendas e Caixa, vamos prosseguir chamando as macros limparCamposDoFormulario, atualizaCaixaDeListagemVendas, atualizaCaixaDeListagemCompras e atualizaCaixaDeListagemCaixa, que vão respectivamente limpar os campos do formulário da aba Vendas e atualizar as caixas de listagem das abas Vendas, Compras e Caixa com os novos dados adicionados
Vamos apagar o conteúdo (Nothing) da variável abaVendas, abaCompras e abaCaixa, que antes armazenava um objeto
Se encerra o código
OBS: Você tem a opção de “abrir”/criar cada Private Sub quando você clicar, em duplo clique, nos botões (objetos) diretamente no formulário.
Nesse caso, poderíamos optar por dar duplo clique no botão “Alterar” delas abas/páginas Compras, Vendas e Caixa, respectivamente, para abrir o código.