Você está na página 1de 9

19/11/12

VBA - Cadastro de Clientes

VBA - Cadastro de Clientes (Excel)


Neste artigo eu volto ao velho e bom VBA-Visual Basic for Applications para mostrar como criar um cadastro de clientes bsico usando os recursos do VBA Excel na verso Microsoft Excel 2002. (pode ser aberto no Excel 2007) Abra o Microsoft Excel 2002 e crie um novo arquivo Excel salvando-o com o nome CadastroClientes.xls. Em seguida altere o nome da primeira planilha para Dados Clientes; para fazer isso clique com o boto direito do mouse sobre o nome da planilha e no menu suspenso selecione Renomear digitando a seguir o novo nome; Feito isso digite nas clulas de A1 at I1 o cabealho da planilha conforme figura abaixo:

Repita o procedimento alterando o nome da segunda planilha para Estados e em seguida digitando os dados nas clulas de A1 at A6 conforme exibido na figura abaixo:

www.macoratti.net/10/10/vba_ccli.htm

1/9

19/11/12

VBA - Cadastro de Clientes

Novamente altere o nome da terceira planilha para Cidades e em seguida digite os dados conforme exibido a seguir:

Encerrada esta primeira parte j podemos criar o nosso formulrio de cadastro que servir para o usurio digitar as informaes que desejamos armazenar. Pressione Alt+F11 para abrir o Editor Visual Basic e no menu Inserir selecione o item UserForm;

O formulrio UserForm1 ser apresentado no editor conforme a figura abaixo:

Em seguida usando a Caixa de Ferramentas inclua os seguintes controles no formulrio:


www.macoratti.net/10/10/vba_ccli.htm 2/9

19/11/12

VBA - Cadastro de Clientes

6 Labels - vou usar o nome padro; 6 Caixas de Texto - txtCPF, txtNome, txtEndereco, txtTelefone, txtEmail, txtNascimento 2 ComboBox - cboEstado e cboCidade 2 OptionButton - vou usar o nome padro; 4 CommandButton - cmdGravar, cmdPesquisar, cmdExcluir, cmdFechar Agora vamos formatar os controles : Para incluir um ttulo do formulrio selecione o mesmo e pressione F4 para exibir a caixa de propriedades do formulrio;

A janela de propriedades exibe todas as propriedades do formulrio; Podemos alterar qualquer propriedade que desejarmos; Vamos alterar a propriedade Caption para Cadastro de Clientes que exibir o ttulo no formulrio; Vamos alterar tambm a propriedade Name para Dados; Obs: Cada controle possui as suas propriedades acessadas da mesma forma, basta selecionar o controle e pressionar F4, e, em seguida seleciona a propriedade que desejamos alterar e informar o novo valor. Faremos isso para cada controle Label, TextBox e ComboBox inserido no formulrio.

O leiaute do formulrio completo dever ficar da seguinte forma:

Observe que nosso projeto j exibe o arquivo Excel , as planilhas e o formulrio criados at agora. Para exibir os estados no controle cboEstado vamos fazer o seguinte: Selecione o controle cboEstado e pressione F4; Em seguida localize a propriedade RowSource e digite : Estados!A2:A6 conforme abaixo:

www.macoratti.net/10/10/vba_ccli.htm

3/9

19/11/12

VBA - Cadastro de Clientes

Para exibir as cidades de um estado selecionado vamos usar o evento Change do controle. D um duplo clique no controle cboEstado e a seguir digite o cdigo a seguir no evento Change:

Private Sub cboEstado_Change() If cboEstado.Value = "BA" Then cboCidade.RowSource = "Cidades!A2:A5" ElseIf cboEstado.Value = "PR" Then cboCidade.RowSource = "Cidades!B3:B5" ElseIf cboEstado.Value = "SC" Then cboCidade.RowSource = "Cidades!C3:C6" ElseIf cboEstado.Value = "SP" Then cboCidade.RowSource = "Cidades!D3:D8" ElseIf cboEstado.Value = "GO" Then cboCidade.RowSource = "Cidades!E3:E6" End If End Sub Observe que a fonte de dados a referncia a planilha Cidades indicando a clula inicial e final onde as informaes foram inseridas. A prxima etapa ser incluir do cdigo nos botes de comando. Vamos usar o evento Click que ocorre quando o usurio clica no boto. Comeando com o boto Gravar, clique duas vezes sobre o mesmo no Editor Visual Basic e ser aberto a janela de cdigo para o evento Click. A seguir digite o cdigo abaixo no evento Click do boto Gravar:

Private Sub cmdGravar_Click() 'Ativar a primeira planilha ThisWorkbook.Worksheets("Dados Clientes").Activate 'Selecionar a clula A3 Range("A3").Select
www.macoratti.net/10/10/vba_ccli.htm 4/9

19/11/12

VBA - Cadastro de Clientes

'Procurar a primeira clula vazia Do If Not (IsEmpty(ActiveCell)) Then ActiveCell.Offset(1, 0).Select End If Loop Until IsEmpty(ActiveCell) = True 'Carregar os dados digitados nas caixas de texto para a planilha ActiveCell.Value = txtCPF.Value ActiveCell.Offset(0, 1).Value = txtNome.Value ActiveCell.Offset(0, 2).Value = txtEndereco.Value ActiveCell.Offset(0, 3).Value = cboEstado.Value ActiveCell.Offset(0, 4).Value = cboCidade.Value ActiveCell.Offset(0, 5).Value = txtTelefone.Value ActiveCell.Offset(0, 6).Value = txtEmail.Value ActiveCell.Offset(0, 7).Value = txtNascimento.Value 'Carregar o sexo do cliente dos botes de opo If OptionButton1.Value = True Then ActiveCell.Offset(0, 8).Value = "Masculino" Else ActiveCell.Offset(0, 8).Value = "Feminino" End If 'Limpar as caixas de texto txtCPF.Value = Empty txtNome.Value = Empty txtEndereco.Value = Empty txtTelefone.Value = Empty txtEmail.Value = Empty txtNascimento.Value = Empty 'Limpar as caixas de combinao cboEstado.Value = Empty cboCidade.Value = Empty 'Limpar os botes OptionButton OptionButton1.Value = False OptionButton2.Value = False 'Colocar o foco na primeira caixa de texto txtCPF.SetFocus End Sub

Agora vejamos o cdigo do evento Click do boto Pesquisar:


Private Sub cmdPequisar_Click() 'Verificar se foi digitado um nome na primeira caixa de texto If txtCPF.Text = "" Then MsgBox "Digite o CPF de um cliente" txtCPF.SetFocus Exit Sub End If With Worksheets("Dados Clientes").Range("A:A") Set c = .Find(txtCPF.Value, LookIn:=xlValues, LookAt:=xlPart) If Not c Is Nothing Then c.Activate txtCPF.Value = c.Value txtNome.Value = c.Offset(0, 1).Value txtEndereco.Value = c.Offset(0, 2).Value cboEstado.Value = c.Offset(0, 3).Value cboCidade.Value = c.Offset(0, 4).Value txtTelefone.Value = c.Offset(0, 5).Value
www.macoratti.net/10/10/vba_ccli.htm 5/9

19/11/12

VBA - Cadastro de Clientes

txtEmail.Value = c.Offset(0, 6).Value txtNascimento.Value = c.Offset(0, 7).Value 'Carregando o boto de opo If c.Offset(0, 8) = "Masculino" Then OptionButton1.Value = True Else OptionButton2.Value = True End If Else MsgBox "Cliente no localizado!" End If End With End Sub

Vejamos agora o cdigo do evento Click do boto Excluir:


Private Sub cmdExcluir_Click() 'Declarar a varivel Resp para receber uma resposta Dim Resp As Integer 'Fazer a busca do registro digitado pelo usurio With Worksheets("Dados Clientes").Range("A:A") Set c = .Find(txtCPF.Value, LookIn:=xlValues, LookAt:=xlWhole) If Not c Is Nothing Then Resp = MsgBox("Tem certeza que deseja excluir o registro?", vbYesNo, "Confirmao") If Resp = vbYes Then c.Select Selection.EntireRow.Delete 'Limpar as caixas de texto txtCPF.Value = Empty txtNome.Value = Empty txtEndereco.Value = Empty cboEstado.Value = Empty cboCidade.Value = Empty txtTelefone.Value = Empty txtEmail.Value = Empty txtNascimento.Value = Empty OptionButton1.Value = False OptionButton2.Value = False 'Colocar o foco na primeira caixa de texto txtCPF.SetFocus Else MsgBox "O registro no ser excludo!" End If Else MsgBox "Cliente no encontrado!" End If End With Exit Sub End Sub

Finalmente temos o cdigo do boto Fechar que mostrado a seguir:

Private Sub cmdFechar_Click() Dados.Hide End Sub Agora vamos voltar para nossa planilha pressionando Alt+Q ou no menu Arquivo-> Fechar e voltar para o Microsoft Excel;
www.macoratti.net/10/10/vba_ccli.htm 6/9

19/11/12

VBA - Cadastro de Clientes

Na planilha vamos incluir um boto para carregar o formulrio que acabamos de criar; Para isso vamos ativar a barra de ferramentas do Visual Basic na planilha. Para isso selecione no menu Exibir a opo Barras de Ferramentas e selecione Visual Basic;

Em seguida selecione o Boto de comando na barra de ferramentas e inclua na planilha. Selecione o controle e pressione F4 e altere a sua propriedade Caption para Cadastar;

www.macoratti.net/10/10/vba_ccli.htm

7/9

19/11/12

VBA - Cadastro de Clientes

Executando o projeto iremos ver o formulrio ser exibido conforme a figura abaixo.

S resta digitar as informaes do cliente e ver a incluso na planilha. Simples , simples assim... Pegue o projeto completo : CadastroClientes.zip

Eu sei apenas VBA, mas eu gosto... Referncias: VBA - Agenda Simples no Excel VB .NET - Incluindo uma tabela do Word em um DataGridView Visual Studio Tools for Office (VSTO) - Introduo VBA - Excel : Acessando dados com ADO Seo VBA e VSTO do site : seo VBA e VSTO
www.macoratti.net/10/10/vba_ccli.htm 8/9

19/11/12

VBA - Cadastro de Clientes

Jos Carlos Macoratti

www.macoratti.net/10/10/vba_ccli.htm

9/9