Excel VBA

Cadastro cliente em Excel VBA

Cadastro cliente Excel VBA use este modelo de cadastro para controlar todos os seus clientes onde permite cadastrar os campos abaixo:

Nome, endereço, número, bairro, cidade, estado, cep, ddd, telefone, celular, rg, cpf, email, data cadastro e observação.

Após feito o cadastro podemos consultar os clientes já cadastrado por id ou nome e imprimir os clientes já cadastrado.

Agora vamos aos passos como funciona.

1- Para cadastrar um cliente novo clique no botão novo.

2- Quando lançar o CEP ele já adiciona o endereço automaticamente.

3 – Após lançado todos os dados do cliente, clique no botão cadastrar.

4- O botão limpar serve para limpar os campos dos formulários caso tenha iniciado um cadastro e resolveu não cadastrar mais.

5- Para consultar todos os cadastros clique no botão consulta e podemos filtrar por id e nome.

6- Com a consulta aberta podemos editar um cliente já cadastrado.

7- O botão excluir temos a opção para excluir um cliente já cadastrado.

8- Temos disponível o botão imprimir para imprimir todos os clientes cadastrado.

Para os usuários mais avançado planilha desbloqueada para alteração e fonte liberado.

Já temos um bom tempo de programação em Excel VBA e quando chegamos em um código fonte bem preparado e com ótima lógica de programação é muito bom compartilhar o conhecimento e veja cada detalhe do fonte que usamos neste cadastro de cliente.

Agora para você que é usuário do Excel VBA e quer aproveitar este cadastro para estudar ou utilizar as fontes segue abaixo algumas instruções interessante.

Cadastro cliente em Excel VBA dicas dos comandos utilizado.

Dicas do Excel VBA 01 – Colocamos no cadastro do cliente o CEP já com o endereço automático facilitando a vida do usuário.

Para isso usamos o site https://viacep.com.br para acessar o CEP automático.

Criamos a função ConsultaCEP conforme abaixo:

Function ConsultaCEP(valorcep As String, tipoCampo As String)
Dim oXmlDoc As DOMDocument
Dim oXmlNode As IXMLDOMNode
Dim oXmlNodes As IXMLDOMNodeList
Set oXmlDoc = New DOMDocument
oXmlDoc.async = False
oXmlDoc.Load (“https://viacep.com.br/ws/” + valorcep + “/xml/”)
Set oXmlNodes = oXmlDoc.SelectNodes(“/xmlcep/” + tipoCampo)
For Each oXmlNode In oXmlNodes
ConsultaCEP = oXmlNode.Text
Next
End Function

Para utilizar as referências XML no ambiente VBA precisa habilitar em “Ferramentas – Referencias” Microsoft XML, v3.0.

No botão correios precisamos colocar a função abaixo para apontar os txtlabel envolvidos como o endereço, bairro, cidade e estado.

Sintaxe utilizada no botão correio:

Private Sub ECorreios_Click()
txt_endereço = UCase(ConsultaCEP(txt_cep, “logradouro”))
txt_bairro = UCase(ConsultaCEP(txt_cep, “bairro”))
cmb_cidade = UCase(ConsultaCEP(txt_cep, “localidade”))
cmb_uf = UCase(ConsultaCEP(txt_cep, “uf”))
txt_numero.SetFocus
End Sub

No campo CEP utilizamos no evento KeyPress a formatação para preenchimento correto do CEP.

Sintaxe abaixo utilizada:

Private Sub txt_cep_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
txt_cep.MaxLength = 9
Select Case KeyAscii
Case 8, 48 To 57
If Len(txt_cep) = 5 Then
txt_cep.Text = txt_cep.Text & “-“
End If
Case Else
KeyAscii = 0
End Select
End Sub

Dicas do Excel VBA 02 – Botão imprimir

Foi criado uma função para imprimir os clientes cadastrado.

Função criada:

Sub Relatório_imprimir()
Application.ScreenUpdating = False
On Error Resume Next
Dim SvInput As String
Dim data As String
Dim var_MENSAGEM
Dim nome As String
data = VBA.Format(VBA.Date, “dd-mm-yyyy”)
SvInput = ThisWorkbook.Path & Application.PathSeparator & nome & “” & data & “.pdf”
With ActiveSheet
.ExportAsFixedFormat _
Type:=x1TypePDF, _
Filename:=SvInput, _
OpenAfterPublish:=True
End With
Application.ScreenUpdating = True
End Sub

E no botão imprimir usamos a função abaixo:

Sheets(“DADOS CLIENTES”).Select
Call Relatório_imprimir

Dicas do Excel VBA 03 – A consulta fica oculta no formulário do cadastro cliente.

A otimização de tela na hora da programação é muito importante principalmente quando temos vários componentes no formulário.

Para isso ao abrir o cadastro ocultamos o ListaBox com a função abaixo no evento inicialize.

Private Sub UserForm_Initialize()
lst_busca.Visible = False
Label18.Visible = False
Frame4.Visible = False
End Sub

Segue as demais fontes dos botões:

Botão Fechar:

A função Unload Me fecha o formulário e após fechar estamos direcionando para a planilha prlncipal “Sheets(“PRINCIPAL”).Select”.

Unload Me
Sheets(“PRINCIPAL”).Select

Botão Limpar:

A função (txt_razao = “”) limpa os TxtBox e a função “txt_razao.SetFocus” posiciona o pulsor neste campo txt_razao.

txt_razao = “”
txt_fantasia = “”
txt_endereço = “”
txt_numero = “”
txt_bairro = “”
cmb_uf = “”
cmb_cidade = “”
txt_cep = “”
txt_ddd = “”
txt_telefone = “”
TextBox2 = “”
txt_cnpj = “”
txt_ie = “”
txt_contatos = “”
txt_data = “”
txt_observacao = “”
txt_razao.SetFocus

Botão Editar:

A função (lst_busca.Visible = False) vai ocultar a ListBox mais a label e Frame para liberar o cadastro.

lst_busca.Visible = False
Label18.Visible = False
Frame4.Visible = False

Botão Salvar:

Após feito alteração o botão salvar vai atualizar as informações lançadas. A função (Do Until Sheets(“DADOS CLIENTES”).Cells(Linha, 1) = “”) Vai executar o laço até encontrar uma célula vazia condicção para localizar o registro.

A função (If Sheets(“DADOS CLIENTES”).Cells(Linha, 1) = ID Then) Vai encontrar o valor registro na célula pesquisada.

A função (Sheets(“DADOS CLIENTES”).Cells(Linha, 1).Select) Vai será selecionada a célula.

A função (Sheets(“DADOS CLIENTES”).Cells(Linha, 2) = txt_razao) está direcionando cada célula encontrada para efetivar as atualização.

Dim ID As Integer
ID = txt_id
Linha = 2
Sheets(“DADOS CLIENTES”).Select
Do Until Sheets(“DADOS CLIENTES”).Cells(Linha, 1) = “”
‘condicção para localizar o registro
If Sheets(“DADOS CLIENTES”).Cells(Linha, 1) = ID Then
Sheets(“DADOS CLIENTES”).Cells(Linha, 1).Select
Sheets(“DADOS CLIENTES”).Cells(Linha, 2) = txt_razao
Sheets(“DADOS CLIENTES”).Cells(Linha, 3) = txt_endereço
Sheets(“DADOS CLIENTES”).Cells(Linha, 4) = txt_numero
Sheets(“DADOS CLIENTES”).Cells(Linha, 5) = txt_bairro
Sheets(“DADOS CLIENTES”).Cells(Linha, 6) = cmb_cidade
Sheets(“DADOS CLIENTES”).Cells(Linha, 7) = cmb_uf
Sheets(“DADOS CLIENTES”).Cells(Linha, 8) = txt_cep
Sheets(“DADOS CLIENTES”).Cells(Linha, 9) = txt_ddd
Sheets(“DADOS CLIENTES”).Cells(Linha, 10) = txt_telefone
Sheets(“DADOS CLIENTES”).Cells(Linha, 11) = TextBox2
Sheets(“DADOS CLIENTES”).Cells(Linha, 12) = txt_cnpj
Sheets(“DADOS CLIENTES”).Cells(Linha, 13) = txt_ie
Sheets(“DADOS CLIENTES”).Cells(Linha, 14) = txt_data
Sheets(“DADOS CLIENTES”).Cells(Linha, 15) = txt_email
Sheets(“DADOS CLIENTES”).Cells(Linha, 16) = txt_observacao
MsgBox (“Cadastro alterado com sucesso!”)
Call UserForm_Initialize
Exit Sub
End If
Linha = Linha + 1
Loop

Botão cadastrar:

A função (If txt_razao.Text = “” Then) deixa o campo txt_razao obrigatorio o seu preenchimento.

On Error Resume Next
If txt_razao.Text = “” Then
MsgBox “Preencha os Campos”
txt_razao.SetFocus
Exit Sub
End If
Sheets(“DADOS CLIENTES”).Select
Range(“A1048576”).Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Select
Dim data_cad As Date
ID = txt_id
razao = txt_razao
fantasia = txt_fantasia
endereço = txt_endereço
bairro = txt_bairro
cidade = cmb_cidade
uf = cmb_uf
Cepp = txt_cep
ddd = txt_ddd
telefone = txt_telefone
CELULAR = TextBox2
cnpj = txt_cnpj
ie = txt_ie
contatos = txt_contatos
data_cad = txt_data
observação = txt_observacao
ActiveCell = ID
ActiveCell.Offset(0, 1).Select
ActiveCell = razao
ActiveCell.Offset(0, 1).Select
ActiveCell = endereço
ActiveCell.Offset(0, 1).Select
ActiveCell = txt_numero
ActiveCell.Offset(0, 1).Select
ActiveCell = bairro
ActiveCell.Offset(0, 1).Select
ActiveCell = cidade
ActiveCell.Offset(0, 1).Select
ActiveCell = uf
ActiveCell.Offset(0, 1).Select
ActiveCell = Cepp
ActiveCell.Offset(0, 1).Select
ActiveCell = ddd
ActiveCell.Offset(0, 1).Select
ActiveCell = telefone
ActiveCell.Offset(0, 1).Select
ActiveCell = CELULAR
ActiveCell.Offset(0, 1).Select
ActiveCell = cnpj
ActiveCell.Offset(0, 1).Select
ActiveCell = ie
ActiveCell.Offset(0, 1).Select
ActiveCell = data_cad
ActiveCell.Offset(0, 1).Select
ActiveCell = txt_email
ActiveCell.Offset(0, 1).Select
ActiveCell = observação
txt_razao = “”
txt_fantasia = “”
txt_endereço = “”
txt_numero = “”
txt_bairro = “”
cmb_uf = “”
cmb_cidade = “”
txt_cep = “”
txt_ddd = “”
txt_telefone = “”
TextBox2 = “”
txt_cnpj = “”
txt_ie = “”
txt_contatos = “”
txt_data = “”
txt_observacao = “”
txt_email = “”
CheckBox1 = False
Call UserForm_Initialize

Botão Novo:

A função (txt_razao = “”) limpa os TxtBox e a função “txt_razao.SetFocus” posiciona o pulsor neste campo txt_razao.

txt_razao = “”
txt_fantasia = “”
txt_endereço = “”
txt_numero = “”
txt_bairro = “”
cmb_uf = “”
cmb_cidade = “”
txt_cep = “”
txt_ddd = “”
txt_telefone = “”
TextBox2 = “”
txt_cnpj = “”
txt_ie = “”
txt_email = “”
txt_data = “”
txt_observacao = “”
Call UserForm_Initialize
CommandButton1.Enabled = True
txt_razao.SetFocus

Botão excluir:

A função (If txt_razao.Text = “” Then) deixa o campo txt_razao obrigatorio o seu preenchimento.

A função (Do Until Sheets(“DADOS CLIENTES”).Cells(Linha, 1) = = CODIGO Then) Vai executar o laço até encontrar uma célula vazia condicção para localizar o registro.

A função (If Sheets(“DADOS CLIENTES”).Cells(Linha, 1) = ID Then) Vai encontrar o valor registro na célula pesquisada.

A função (ActiveCell.Rows(“1:1”).EntireRow.Select Selection.Delete Shift:=xlUp ActiveCell.Select). Este comando vai deletar toda a linha.

‘Call carrega_listaprodutos
Dim CODIGO As Integer
Linha = 2
CODIGO = txt_id
Sheets(“DADOS CLIENTES”).Select
Do Until Sheets(“DADOS CLIENTES”).Cells(Linha, 1) = “”
‘condicção para localizar o código
If Sheets(“DADOS CLIENTES”).Cells(Linha, 1) = CODIGO Then
Sheets(“DADOS CLIENTES”).Cells(Linha, 1).Select
Dim resposta As String ‘cria a variável resposta
resposta = MsgBox(“O registro será excluído. Confirma a exclusão?”, vbYesNo) ‘cria a mensagem para determinar qual ação será executada
If resposta = vbYes Then ‘ se a resposta for sim então
‘comando para deletar toda a linha
ActiveCell.Rows(“1:1”).EntireRow.Select
Selection.Delete Shift:=xlUp
ActiveCell.Select
‘limpa todos os campos do formulário
txt_id = “”
txt_razao = “”
txt_endereço = “”
txt_numero = “”
txt_bairro = “”
cmb_cidade = “”
txt_cep = “”
cmb_uf = “”
TextBox2 = “”
txt_ddd = “”
txt_telefone = “”
txt_data = “”
txt_observacao = “”
txt_ie = “”
txt_cnpj = “”
MsgBox (“Registro excluído com sucesso!!!”)
lst_busca.Clear
Call UserForm_Initialize
Else
End If
End If
Linha = Linha + 1
Loop
txt_razao.SetFocus

Segue planilha para baixar desbloqueada e fontes liberado.

Download

Olá, amigos! Inscreva-se em nosso canal do Youtube para não perder os próximos vídeos.

admin

Dicas do Excel.

View Comments

  • Boa noite admin!
    Fiz um teste com o Calendário na Planilha de Cadastro de Clientes, achei interessante e opcional. Conseguir abrir ele em uma EstaPastaDeTrabalho mas, ele não inserir a data em uma célula ativa. Tem como fazer esta instrução?

  • Ola admin!
    Tenho uma PastaDeTrabalho com planilhas de contabilidade e estou usando o calendário que tem na planilha de Cadastro de Clientes, achei lega, consigo abri-lo em qualquer planilha. Ele abre com um botão para selecionar datas na Text-box, o calendário abrindo em planilha tem a opção de inserir também datas em uma célula ativa?

      • Ola admin!
        Desculpe pela demora, estava sem Internet.
        É o seguinte, o calendário é magnifico, quero saber se ele só seleciona datas em uma TextBox ou ele abre na Planilha para selecionar datas e inserir em um célula ativa em qualquer Planilha.
        Obrigado.

        Geraldo Majela Gurgel

        Sete Lagoas/MG

  • Ola admin!
    Desculpe pela demora, estava sem Internet.
    É o seguinte, o calendário é magnifico, quero saber se ele só seleciona datas em uma TextBox ou ele da para selecionar datas e inserir em um célula ativa em qualquer Planilha.
    Obrigado.

    Geraldo Majela Gurgel

    Sete Lagoas/MG

    • Olá amigo, Clique com o botão direito no botão Download opção Abrir link em um nova guia.

  • OLA BOA NOITE O USER_FORN INITIALIZE ESTA OCULTO COMO FAÇO PRA EXIBIR SE POSSIVEL FALAR SEU SERVIÇO FICOU INCRIVEL PARABÉNS

    • Olá amigo o navegador google chrome está com falhas para download favor usar outro navegador para baixar as planilhas.

      • É verdade. Pelo Chrome e tbm baseado no Chromium como o navegador Brave. Baixei pelo Firefox de boa.
        Obrigado por compartilhar a Planilha.
        Abç.

        • Olá Admin
          Uso Linux (RegataOS/OpenSUSE).
          Esta planilha não funciona no "CALC"(LibreOffice) por causa das macros?
          Ao clicar no botão "Cadastro Cliente", dá erro : "Erro de Sintaxe do BASIC. Símbolo inesperado: Type." E aponta erro na linha 707.ExportAsFixedFormat do Objeto do documento/Catalogo do objeto/VBA Projetc .
          Tbm tentei abrir no OnlyOffice, o botão "Cadastro Cliente" fica em modo de edição e não abre o link do botão.
          Abraço.
          Obrigado por compartilhar

Share
Published by
admin

Recent Posts

Gráfico de mapas no Excel

Gráfico de mapas no Excel, veja que interessante está ferramenta onde mostra a população por…

1 mês ago

Calendário anual no Excel

Calendário anual no Excel, desenvolvido com as funções do Excel e muito útil para planejamento…

1 mês ago

Formatação condicional no Excel na linha inteira

Formatação condicional no Excel na linha inteira, veja que interessante está formatação no Excel, conforme…

2 meses ago

Macros para armazenar dados no Excel

Macros para armazenar dados no Excel, vamos entender ou pouco sobre o conceito de macros…

2 meses ago

Função ÉERROS no Excel

Função ÉERROS no Excel é utilizada para verificar se uma célula contém algum tipo de…

2 meses ago

Função subtotal no Excel

Função subtotal no Excel permite calcular subtotais de uma lista ou intervalo de dados, aplicando…

3 meses ago