Veja no vídeo abaixo e no artigo como criar um formulário VBA no Excel passo-a-passo.
No exemplo fazemos um cadastro de clientes com inclusão, edição e exclusão de dados via formulário interagindo com a tabela na planilha do Excel.
Como Funciona o Formulário VBA deste Exemplo
No nosso exemplo temos um cadastro de clientes e desejamos entrar estes dados através de um formulário VBA.
Eles estão dispostos da seguinte forma em uma tabela no Excel:
Como pode notar temos os dados:
- Nome
- CEP
- Cidade
- UF
- Endereço
- Número
Neste sentido desejamos que ao chamar o formulário tenhamos então o seguinte visual dos dados:
Para isso nós iremos mostrar passo-a-passo como criar do zero desde habilitar a guia desenvolvedor para que possa programar esta entrada de dados.
Habilitar Macros no Excel
Por padrão o Excel não traz a guia desenvolvedor habilitada, é nela que você pode criar um cadastro de clientes por exemplo, ou automatizar tarefas repetitivas. É uma ferramenta de programação completa.
Para habilitar a guia desenvolvedor clique com o botão direito sobre qualquer parte cinza de uma das guias do menu e clique com o botão direito e selecione Personalizar a Faixa de Opções.
Marque a opção Desenvolvedor conforme abaixo, com isso a guia já irá aparecer.
Criar um Formulário de Entrada de Dados VBA no Excel
Na guia desenvolvedor clique no botão Visual Basic e clique na guia Inserir e Formulário.
No Formulário colocamos os objetos conforme temos na imagem abaixo.
Desenhe adicionando command butons, labels e textbox.
Nele nós renomeamos os campos txt para:
- txtNome
- txtCEP
- txtCidade
- txtUF
- txtEndereco
- txtNumero
E os botões para:
- cmdNovo
- cmdExcluir
- cmdGravar
Então inclua o seguinte código dando um duplo clique no botão cmdNovo:
Private Sub cmdExcluir_Click()
lsExcluir
End Sub
Private Sub cmdGravar_Click()
If lLinha = 0 Then
lLinha = Clientes.Cells(Clientes.Rows.Count, 1).End(xlUp).Row
If lLinha <> 4 Then
lLinha = lLinha + 1
End If
End If
lsCadastrar lLinha
lsLimpar
End Sub
Private Sub cmdNovo_Click()
lsLimpar
lsLinha = 0
End Sub
Veja como fica o código no formulário:
Clique também no módulo e inclusa o código abaixo:
Global lLinha As Long
Public Sub lsExcluir()
If MsgBox("Deseja excluir este registro", vbYesNo) Then
Clientes.Cells(lLinha, 1).EntireRow.Delete
lsLimpar
End If
End Sub
Public Sub lsLimpar()
With frmCliente
.txtNome = ""
.txtCEP = ""
.txtCidade = ""
.txtEndereco = ""
.txtNumero = ""
.txtUF = ""
End With
lLinha = 0
End Sub
Public Sub lsCadastrar(ByVal lLinha As Long)
With Clientes
.Cells(lLinha, 2).Value = frmCliente.txtNome
.Cells(lLinha, 3).Value = frmCliente.txtCEP
.Cells(lLinha, 4).Value = frmCliente.txtCidade
.Cells(lLinha, 5).Value = frmCliente.txtUF
.Cells(lLinha, 6).Value = frmCliente.txtEndereco
.Cells(lLinha, 7).Value = frmCliente.txtNumero
End With
End Sub
Public Sub lsPreencher(ByVal lLinha As Long)
With Clientes
frmCliente.txtNome = .Cells(lLinha, 2).Value
frmCliente.txtCEP = .Cells(lLinha, 3).Value
frmCliente.txtCidade = .Cells(lLinha, 4).Value
frmCliente.txtUF = .Cells(lLinha, 5).Value
frmCliente.txtEndereco = .Cells(lLinha, 6).Value
frmCliente.txtNumero = .Cells(lLinha, 7).Value
End With
End Sub
Veja como fica o código no módulo:
Por fim, ainda no VBE, na árvore de objetos, dê um duplo clique sobre a planilha que está trabalhando.
Nós iremos adicionar um código para que ao dar um duplo clique seja chamado o formulário de cadastro.
O código é o seguinte:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Clientes.Cells(Target.Row, 1).Value <> "" And Target.Row > 3 Then
lLinha = Target.Row
End If
If lLinha > 0 Then
lsPreencher lLinha
End If
frmCliente.Show
Cancel = True
End Sub
No topo deste artigo tem um vídeo mostrando como criar o formulário do zero, aconselho também a assistir pois ele mostra passo-a-passo como realizar e pode tirar qualquer dúvida.
E abaixo pode também realizar o download da planilha pronta.
Download
Clique no botão abaixo para realizar o download da planilha de entrada de dados Excel VBA, com exemplo de dados: