Blog

Postado em em 4 de dezembro de 2021

Controle para Empresas Aula11 – Movimentações da aba de Compras

Hoje em Controle para Empresas Aula11 nós vamos dar início ao cadastro da movimentação da aba de compras para poder registrar as compras!

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 décima primeira aula da nossa Série de Controle para Empresas, e nessa aula vamos cadastrar as movimentações no VBA na aba de compras!

Para essa aula com formulário no VBA vamos utilizar um código que já criamos anteriormente, então facilita o trabalho!

No VBA isso é muito útil, pois as vezes queremos fazer a mesma ação ou algo parecido, então basta copiar o código e fazer alguns ajustes.

Hoje vamos utilizar a estrutura de repetição no VBA (estrutura de repetição for each), que é um pouco diferente do “for” sozinho, pois essa pega cada elemento de um todo.

Vamos utilizar também a estrutura condicional (estrutura if no VBA) que você já sabe como usar e o msgbox (caixa de mensagens) para mostrar uma mensagem ao usuário.

Tudo isso nós já vimos em aulas anteriores, mas agora vamos adaptar para as movimentações na aba de compras.

E aí, vamos pra aula aprender a modificar mais um código e continuar com a construção do nosso formulário?

Inserindo um módulo

Para criar um código dentro de um módulo, precisamos primeiramente abrir o ambiente de VBA, a partir do atalho do teclado Alt(+Fn)+F11. Assim poderemos de fato criar o nosso código a ser utilizado.

Como não temos nenhum módulo criado antes nessa planilha, vamos na guia Inserir > Módulo, e uma caixa branca se abrirá.

Colocaremos a seguinte function dentro dele, que será o objeto de estudo da aula de hoje:

Function checarCamposVazios() As Boolean

 

Dim forma As Object

 

For Each forma In ControleDaEmpresa.BlocoDeAbas.Pages(ControleDaEmpresa.BlocoDeAbas.Value).Controls

    If TypeName(forma) = "TextBox" And forma.Value = "" Then

        MsgBox ("Existem campos vazios. Favor preencher corretamente.")

        checarCamposVazios = True

        Exit Function

    End If

Next

 

checarCamposVazios = False

 

End Function

Comentários a respeito da function checarCamposVazios():

  • Vamos dimensionar a variável “forma” como um objeto. Ela vai representar cada possível objeto de cada aba/página do nosso formulário
  • Vamos utilizar de uma estrutura de repetição For Each, que vai fazer ações repetidas em uma unidade de um todo, que é formado por essas unidades.
    • No caso vamos considerar um único objeto que será representado pela variável “forma” no conjunto de objetos/controles da aba atual (onde o botão clicado de “Adicionar” estará), do nosso bloco de abas (objeto multipágina) do formulário ControleDeEmpresa (leia da direita para a esquerda)
    • Vamos utiliza de uma estrutura if que vai permitir a gente ver se o tipo do nome do nosso objeto analisado é igual a “TextBox”, a cada objeto da página em questão, e, ao mesmo tempo, deve checar se o valor da forma está vazia (nada preenchido)
    • Caso seja uma TextBox e esteja vazia a forma, essa comparação vai ser verdadeira, e vamos gerar caixa de mensagens na tela (MsgBox) avisando que “Existem campos vazios. Favor preencher corretamente.”. Além disso, será atribuído como resposta à function checarCamposVazios o valor de verdadeiro (True) e o código será abortado (exit sub).
    • E seguiremos para o próximo objeto a ser testado
    • Caso não haja objetos vazios naquela página, será atribuída à function checarCamposVazios o valor de falso (False)
    • Não havendo mais controles/objetos a analisar naquela aba/página, seguiremos o código
  • Se encerra o código

O código acima vai ser utilizado por vários botões “Adicionar” do nosso formulário. Por isso criamos apenas um código dentro de um módulo específico e separado.

Vamos “chamar” esse mesmo código universal por todos os botões “Adicionar”. Independentemente da página e dos nomes das caixas de textos dela, ele irá interpretar as comparações e fará a limpeza das caixas necessárias.

Na aula de hoje, no caso, vamos fazer ela ser chamada apenas para a aba de Compras do formulário e continuaremos nas aulas seguintes.

OBS1: Para entender melhor a diferença entre Sub e Function: digamos que a sub é formada por um conjunto de rotinas que vai te gerar ações e não necessariamente uma resposta; e a function vai ser um conjunto de rotinas que vai te gerar um resultado/resposta, geralmente através de cálculos.

OBS2: Caso queira aprender mais sobre estrutura de repetição For Each, indicamos esse outro post aqui que te ensina com detalhes.

OBS3: Além disso, explicamos a estrutura If em outro post do nosso blog também de forma detalhada, caso queira conferir.

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.

Formulário VBA

Formulário VBA
Formulário VBA

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.

Inserindo os códigos abaixo dentro dos códigos já existentes no formulário

Private Sub BtAdicionarCompras_Click()

If checarCamposVazios Then Exit Sub

End Sub

Explicação do código acima:

  • O código acima vai simplesmente chamar (comando Call) a nossa sub criada no começo da aula de hoje, a checarCamposVazios.
  • Resumidamente: se a function 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).
  • Consequentemente, se a resposta da function for falsa (nenhuma caixa vazia), o botão de adicionar poderá funcionar normalmente
  • 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.

Conclusão do Controle para Empresas Aula11

Nessa aula (Controle para Empresas Aula11) se destacaram os seguintes tópicos:

Até o próximo post! Fique ligado no nosso canal do Youtube para mais conteúdo de Excel, VBA e Power BI! Um abraço!

Hashtag Treinamentos

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


Quer aprender mais sobre VBA com um Minicurso Gratuito?


Em 4 dias vamos te tirar do zero no Excel e te mostrar como criar Dashboards que Impressionam e como passar em qualquer Prova de Excel! Participe!