Spreadsheet Marketing Budget Report File Concept
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.
Olá, amigos! Inscreva-se em nosso canal do Youtube para não perder os próximos vídeos.
Função procurar no Excel é uma função de texto que permite localizar a posição de…
Função soma no Excel é uma das mais utilizadas por profissionais, estudantes e entusiastas que…
Gráfico de mapas no Excel, veja que interessante está ferramenta onde mostra a população por…
Calendário anual no Excel, desenvolvido com as funções do Excel e muito útil para planejamento…
Formatação condicional no Excel na linha inteira, veja que interessante está formatação no Excel, conforme…
Macros para armazenar dados no Excel, vamos entender ou pouco sobre o conceito de macros…
View Comments
Nao encontrei onde pode optar por PF ou Juridic
Neste cadastro não tem está opção.
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?
Olá amigo não entendi sua necessidade.
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
Como fazer para evitar dados duplicados
Ola admin
Como faço pra inserir mais campos no cadastro?
Desde já obrigado
Junior
Sorocaba / SP
Não estou conseguindo baixar esta planilha, o link esta corrompido? alguém ai sabe dizer??
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
Como fazer download?
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
Olá amigo sim não funciona no CALC LibreOffice.
Usei as instruções e nada acontece.