Blog

Postado em em 14 de janeiro de 2022

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
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

        abaCompras.Cells(i, 2).Value = CDate(CxDataPCompras.Value)
       abaCompras.Cells(i, 3).Value = CDate(CxDataCCompras.Value)
       abaCompras.Cells(i, 4).Value = CxFornecedorCompras.Value
       abaCompras.Cells(i, 5).Value = CxProdutoCompras.Value
       abaCompras.Cells(i, 6).Value = CLng(CxQuantidadeCompras.Value)
       abaCompras.Cells(i, 7).Value = CDbl(CxCustoTotalCompras.Value)    

        abaCompras.Range("A:G").Columns.AutoFit
   End If

Next


'Alterando na aba Caixa
ultLin = abaCaixa.Range("A1000000").End(xlUp).Row

For i = 2 To ultLin

    If CLng(abaCaixa.Cells(i, 1).Value) = CLng(CxIDCompras.Value) Then

        abaCaixa.Cells(i, 2).Value = CDate(CxDataPCompras.Value)
       abaCaixa.Cells(i, 3).Value = CDate(CxDataCCompras.Value)
       abaCaixa.Cells(i, 4).Value = CxProdutoCompras.Value
       abaCaixa.Cells(i, 5).Value = "Compra"
       abaCaixa.Cells(i, 6).Value = CxContaCompras.Value
       abaCaixa.Cells(i, 7).Value = -CDbl(CxCustoTotalCompras.Value)
       abaCaixa.Cells(i, 8).Value = CxStatusCompras.Value     

        abaCaixa.Range("A:H").Columns.AutoFit

    End If

Next

'Limpar campos do formulário
Call limparCamposDoFormulario


'Atualizar Caixa de Listagem
Call atualizaCaixaDeListagemCompras
Call atualizaCaixaDeListagemCaixa


Set abaCompras = Nothing
Set abaCaixa = Nothing

End Sub

Explicação do código acima (BtAlterarCompras_Click):

  • Vamos dimensionar uma variável chamada abaCompras como um objeto
  • Vamos dimensionar uma variável chamada abaCaixa como um objeto
  • Dimensionar uma variável chamada ultLin como um número do tipo Long, assim como uma variável “i”. Para mais detalhes dos tipos de variáveis no VBA visite essa página.
  • 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
  • Dentro da estrutura de repetição, faremos linha a linha uma verificação, através de uma estrutura If entre o número do ID da linha “i” em questão, na coluna 1 (dado pela função de conversão CLng) e o número dado pela CxIDCompras:
    • 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
  • Dentro da estrutura de repetição, faremos linha a linha uma verificação, através de uma estrutura If entre o número do ID da linha “i” em questão, na coluna 1 (dado pela função de conversão CLng) e o número dado pela CxIDCompras:
    • 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

        abaVendas.Cells(i, 2).Value = CDate(CxDataPVendas.Value)
       abaVendas.Cells(i, 3).Value = CDate(CxDataCVendas.Value)
       abaVendas.Cells(i, 4).Value = CxClienteVendas.Value
       abaVendas.Cells(i, 5).Value = CxProdutoVendas.Value
       abaVendas.Cells(i, 6).Value = CLng(CxQuantidadeVendas.Value)
       abaVendas.Cells(i, 7).Value = CDbl(CxValorVendaVendas.Value)
       abaVendas.Cells(i, 8).Value = CDbl(CxCustoUVendas.Value)
       abaVendas.Cells(i, 9).Value = CDbl(CxCustoVVendas.Value)

      abaVendas.Range("A:I").Columns.AutoFit

    End If

Next

'Alterando na aba Caixa
ultLin = abaCaixa.Range("A1000000").End(xlUp).Row


For i = 2 To ultLin

    If CLng(abaCaixa.Cells(i, 1).Value) = CLng(CxIDVendas.Value) Then

        abaCaixa.Cells(i, 2).Value = CDate(CxDataPVendas.Value)
       abaCaixa.Cells(i, 3).Value = CDate(CxDataCVendas.Value)
       abaCaixa.Cells(i, 4).Value = CxProdutoVendas.Value
       abaCaixa.Cells(i, 5).Value = "Venda"
       abaCaixa.Cells(i, 6).Value = CxContaVendas.Value
       abaCaixa.Cells(i, 7).Value = CDbl(CxValorVendaVendas.Value)
       abaCaixa.Cells(i, 8).Value = CxStatusVendas.Value

        abaCaixa.Range("A:H").Columns.AutoFit

    End If

Next

'Limpar campos do formulário
Call limparCamposDoFormulario

'Atualizar Caixa de Listagem
Call atualizaCaixaDeListagemVendas
Call atualizaCaixaDeListagemCaixa
 
Set abaVendas = Nothing
Set abaCaixa = Nothing

End Sub

Explicação do código acima (BtAlterarVendas_Click):

  • Vamos dimensionar uma variável chamada abaVendas como um objeto
  • Vamos dimensionar uma variável chamada abaCaixa como um objeto
  • Dimensionar uma variável chamada ultLin como um número do tipo Long, assim como uma variável “i”. Para mais detalhes dos tipos de variáveis no VBA visite essa página.
  • 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
  • Dentro da estrutura de repetição, faremos linha a linha uma verificação, através de uma estrutura If entre o número do ID da linha “i” em questão, na coluna 1 (dado pela função de conversão CLng) e o número dado pela CxIDVendas:
    • 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
  • Dentro da estrutura de repetição, faremos linha a linha uma verificação, através de uma estrutura If entre o número do ID da linha “i” em questão, na coluna 1 (dado pela função de conversão CLng) e o número dado pela CxIDVendas:
    • 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

        abaCompras.Cells(i, 2).Value = CDate(CxDataPCaixa.Value)
       abaCompras.Cells(i, 3).Value = CDate(CxDataCCaixa.Value)
       abaCompras.Cells(i, 5).Value = CxDescricaoCaixa.Value
       abaCompras.Cells(i, 7).Value = -CDbl(CxValorCaixa.Value)

        abaCompras.Range("A:G").Columns.AutoFit

    End If

Next

 

'Aterar na aba Vendas
ultLin = abaVendas.Range("A1000000").End(xlUp).Row

For i = 2 To ultLin

    If CLng(abaVendas.Cells(i, 1).Value) = CLng(CxIDCaixa.Value) Then

        abaVendas.Cells(i, 2).Value = CDate(CxDataPCaixa.Value)
       abaVendas.Cells(i, 3).Value = CDate(CxDataCCaixa.Value)
       abaVendas.Cells(i, 5).Value = CxDescricaoCaixa.Value
       abaVendas.Cells(i, 7).Value = CDbl(CxValorCaixa.Value)

       abaVendas.Range("A:I").Columns.AutoFit

    End If

Next


'Alterando na aba Caixa
ultLin = abaCaixa.Range("A1000000").End(xlUp).Row

For i = 2 To ultLin

    If CLng(abaCaixa.Cells(i, 1).Value) = CLng(CxIDCaixa.Value) Then

        abaCaixa.Cells(i, 2).Value = CDate(CxDataPCaixa.Value)
       abaCaixa.Cells(i, 3).Value = CDate(CxDataCCaixa.Value)
       abaCaixa.Cells(i, 4).Value = CxDescricaoCaixa.Value
       abaCaixa.Cells(i, 5).Value = CxTipoCaixa.Value
       abaCaixa.Cells(i, 6).Value = CxContaCaixa.Value
       abaCaixa.Cells(i, 7).Value = CDbl(CxValorCaixa.Value)
       abaCaixa.Cells(i, 8).Value = CxStatusCaixa.Value

        abaCaixa.Range("A:H").Columns.AutoFit

    End If

Next

'Limpar campos do formulário
Call limparCamposDoFormulario
 

'Atualizar Caixa de Listagem
Call atualizaCaixaDeListagemVendas
Call atualizaCaixaDeListagemCompras
Call atualizaCaixaDeListagemCaixa

Set abaVendas = Nothing
Set abaCompras = Nothing
Set abaCaixa = Nothing

End Sub

Explicação do código acima (BtAlterarCaixa_Click):

  • Vamos dimensionar uma variável chamada abaVendas como um objeto
  • Vamos dimensionar uma variável chamada abaCaixa como um objeto
  • Vamos dimensionar uma variável chamada abaCompras como um objeto
  • Dimensionar uma variável chamada ultLin como um número do tipo Long. Também dimensionar IDMovimentacao como número do tipo Long, assim como uma variável “i”. Para mais detalhes dos tipos de variáveis no VBA visite essa página.
  • 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
  • Dentro da estrutura de repetição, faremos linha a linha uma verificação, através de uma estrutura If entre o número do ID da linha “i” em questão, na coluna 1 (dado pela função de conversão CLng) e o número dado pela CxIDCaixa:
    • 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
  • Dentro da estrutura de repetição, faremos linha a linha uma verificação, através de uma estrutura If entre o número do ID da linha “i” em questão, na coluna 1 (dado pela função de conversão CLng) e o número dado pela CxIDCaixa:
    • 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
  • Dentro da estrutura de repetição, faremos linha a linha uma verificação, através de uma estrutura If entre o número do ID da linha “i” em questão, na coluna 1 (dado pela função de conversão CLng) e o número dado pela CxIDCaixa:
    • 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.

OBS: Explicamos a estrutura If em outro post do nosso blog também de forma detalhada, caso queira conferir.

OBS2: Para conferir mais detalhes sobre usar as funções do Excel no VBA (WorksheetFunction) você pode dar uma olhada nesse outro post em que abordamos justamente isso.

OBS3: Para conferir detalhes sobre as funções de conversão de tipo, dê uma olhada nesse link aqui.

Conclusão do Controle para Empresas Aula22

Nessa aula (Controle para Empresas Aula22) você resumidamente lidou com:

Valeu, galera! Fique ligado no nosso canal do Youtube para mais conteúdo de Excel, VBA e Power BI toda semana! Um abraço!

Hashtag Treinamentos

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


Quer aprender mais sobre VBA com um Minicurso Gratuito?


Aprenda a se destacar na sua empresa apenas com o Excel! Na Jornada do Excel vamos te ensinar a impressionar com as suas planilhas!