9
19/11/12 VBA - Cadastro de Clientes 1/9 www.macoratti.net/10/10/vba_ccli.htm 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 básico usando os recursos do VBA Excel na versão 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 botão direito do mouse sobre o nome da planilha e no menu suspenso selecione Renomear digitando a seguir o novo nome; Feito isso digite nas células de A1 até I1 o cabeçalho da planilha conforme figura abaixo: Repita o procedimento alterando o nome da segunda planilha para Estados e em seguida digitando os dados nas células de A1 até A6 conforme exibido na figura abaixo:

VBA - Cadastro de Clientes

Embed Size (px)

Citation preview

Page 1: VBA - Cadastro de Clientes

19/11/12 VBA - Cadastro de Clientes

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

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 básico usando os recursos do VBA Excel na versão 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 botão direito

do mouse sobre o nome da planilha e no menu suspenso selecione Renomear digitando a seguir o novo nome;

Feito isso digite nas células de A1 até I1 o cabeçalho da planilha conforme figura abaixo:

Repita o procedimento alterando o nome da segunda planilha para Estados e em seguida digitando os dados

nas células de A1 até A6 conforme exibido na figura abaixo:

Page 2: VBA - Cadastro de Clientes

19/11/12 VBA - Cadastro de Clientes

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

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 formulário de cadastro que servirá para o usuário

digitar as informações que desejamos armazenar.

Pressione Alt+F11 para abrir o Editor Visual Basic e no menu Inserir selecione o item UserForm;

O formulário UserForm1 será apresentado no editor conforme a figura abaixo:

Em seguida usando a Caixa de Ferramentas inclua os seguintes controles no formulário:

Page 3: VBA - Cadastro de Clientes

19/11/12 VBA - Cadastro de Clientes

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

6 Labels - vou usar o nome padrão;

6 Caixas de Texto - txtCPF, txtNome, txtEndereco, txtTelefone, txtEmail, txtNascimento

2 ComboBox - cboEstado e cboCidade

2 OptionButton - vou usar o nome padrão;

4 CommandButton - cmdGravar, cmdPesquisar, cmdExcluir, cmdFechar

Agora vamos formatar os controles :

Para incluir um título do formulário selecione o mesmo e pressione F4 para exibir a caixa de propriedades do

formulário;

A janela de propriedades exibe todas as propriedades do formulário;

Podemos alterar qualquer propriedade que desejarmos;

Vamos alterar a propriedade Caption para Cadastro de Clientes que exibirá

o título no formulário;

Vamos alterar também 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

formulário.

O leiaute do formulário completo deverá ficar da seguinte forma:

Observe que nosso projeto já exibe o arquivo Excel , as planilhas e o formulário 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:

Page 4: VBA - Cadastro de Clientes

19/11/12 VBA - Cadastro de Clientes

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

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 código 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 referência a planilha Cidades indicando a célula inicial e final onde as informações foraminseridas.

A próxima etapa será incluir do código nos botões de comando. Vamos usar o evento Click que ocorre quando

o usuário clica no botão.

Começando com o botão Gravar, clique duas vezes sobre o mesmo no Editor Visual Basic e será aberto a

janela de código para o evento Click.

A seguir digite o código abaixo no evento Click do botão Gravar:

Private Sub cmdGravar_Click()

'Ativar a primeira planilha

ThisWorkbook.Worksheets("Dados Clientes").Activate

'Selecionar a célula A3

Range("A3").Select

Page 5: VBA - Cadastro de Clientes

19/11/12 VBA - Cadastro de Clientes

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

'Procurar a primeira célula 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 botões de opção

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 combinação

cboEstado.Value = Empty

cboCidade.Value = Empty

'Limpar os botões OptionButton

OptionButton1.Value = False

OptionButton2.Value = False

'Colocar o foco na primeira caixa de texto

txtCPF.SetFocus

End Sub

Agora vejamos o código do evento Click do botão 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

Page 6: VBA - Cadastro de Clientes

19/11/12 VBA - Cadastro de Clientes

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

txtEmail.Value = c.Offset(0, 6).Value

txtNascimento.Value = c.Offset(0, 7).Value

'Carregando o botão de opção

If c.Offset(0, 8) = "Masculino" Then

OptionButton1.Value = True

Else

OptionButton2.Value = True

End If

Else

MsgBox "Cliente não localizado!"

End If

End With

End Sub

Vejamos agora o código do evento Click do botão Excluir:

Private Sub cmdExcluir_Click()

'Declarar a variável Resp para receber uma resposta

Dim Resp As Integer

'Fazer a busca do registro digitado pelo usuário

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, "Confirmação")

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 não será excluído!"

End If

Else

MsgBox "Cliente não encontrado!"

End If

End With

Exit Sub

End Sub

Finalmente temos o código do botão 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;

Page 7: VBA - Cadastro de Clientes

19/11/12 VBA - Cadastro de Clientes

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

Na planilha vamos incluir um botão para carregar o formulário que acabamos de criar;

Para isso vamos ativar a barra de ferramentas do Visual Basic na planilha. Para isso selecione no menu Exibir a

opção Barras de Ferramentas e selecione Visual Basic;

Em seguida selecione o Botão de comando na barra de ferramentas e inclua na planilha.

Selecione o controle e pressione F4 e altere a sua propriedade Caption para Cadastar;

Page 8: VBA - Cadastro de Clientes

19/11/12 VBA - Cadastro de Clientes

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

Executando o projeto iremos ver o formulário ser exibido conforme a figura abaixo.

Só resta digitar as informações do cliente e ver a inclusão na planilha.

Simples , simples assim...

Pegue o projeto completo : CadastroClientes.zip

Eu sei é apenas VBA, mas eu gosto...

Referências:

VBA - Agenda Simples no Excel

VB .NET - Incluindo uma tabela do Word em um DataGridView

Visual Studio Tools for Office (VSTO) - Introdução

VBA - Excel : Acessando dados com ADO

Seção VBA e VSTO do site : seção VBA e VSTO

Page 9: VBA - Cadastro de Clientes

19/11/12 VBA - Cadastro de Clientes

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

José Carlos Macoratti