Neste artigo você aprenderá como criar um formulário VBA no Excel com foto e com inserir ,alterar, excluir no Excel.
Criar Tabela de Dados do Cadastro VBA
O primeiro passo é criarmos uma tabela no Excel.
Nela iremos colocar os dados à partir do formulário.
Coloque um cabeçalho com os campos que deseja no formulário e depois clique em Inserir->Tabela.
A lista será convertida em formato de tabela, como temos acima.
No nosso exemplo do projeto temos os campos:
- Nome
- Matrícula
- Cidade
- Endereço
- Fone
- Foto
Criando o Formulário VBA
Agora iremos criar um formulário VBA, para isso pressione ALT+F12 ou senão clique na guia Desenvolvedor e em Visual Basic.
Na tela do VBE clique em Inserir->Formulário e arraste para redimensionar o formulário conforme temos abaixo.
Clique no botão abaixo e desenhe no formulário uma imagem conforme vemos abaixo.
Na Caixa de Ferramentas clique no botão e desenhe logo abaixo da imagem, é aonde iremos carregar os dados.
Altere a proprieda Text do botão e coloque o texto Carregar Imagem.
Na caixa de ferramentas adicione os componentes labels e altere os captions conforme os textos de cada campo e também adicione uma caixa de combinação ao lado do label.
Ficará conforme abaixo:
Desenhe as caixas de texto ao lado dos labels para criar o formulário com os campos conforme abaixo:
Clique na caixa de ferramentas e insira os botões Inserir, Gravar e Excluir conforme no formulário abaixo
Código do Formulário de Cadastro
Agora iremos inserir um módulo para colocarmos o código que será usado no formulário.
Clique em Inserir->Módulo e coloque o código abaixo:
Global gstrFoto As String
'Carrega os nomes
Public Sub lsCarregarLista()
Dim ltbCadastro As ListObject
Dim i As Long
frmCadastro.cmbNome.Clear
Set ltbCadastro = ActiveSheet.ListObjects("tCadastro")
For i = 1 To ltbCadastro.ListColumns(1).DataBodyRange.Rows.Count
frmCadastro.cmbNome.AddItem ltbCadastro.DataBodyRange(i, 1).Value
Next i
End Sub
'Grava na planilha
Public Sub lsDados()
On Error Resume Next
Cells(ActiveCell.Row, 2).Select
ActiveCell = UCase(frmCadastro.cmbNome.Value)
ActiveCell.Offset(0, 1).Value = UCase(frmCadastro.txtMatricula.Value)
ActiveCell.Offset(0, 2).Value = UCase(frmCadastro.txtCidade.Value)
ActiveCell.Offset(0, 3).Value = UCase(frmCadastro.txtEndereco.Value)
ActiveCell.Offset(0, 4).Value = UCase(frmCadastro.txtFone.Value)
ActiveCell.Offset(0, 5).Value = UCase(frmCadastro.txtEmail.Value)
ActiveCell.Offset(0, 6).Value = gstrFoto
lsCarregarLista
End Sub
'Carrega dados da planilha
Public Sub lsCarregarDados()
On Error Resume Next
Cells(ActiveCell.Row, 2).Select
frmCadastro.cmbNome.Value = ActiveCell.Value
frmCadastro.txtMatricula.Value = ActiveCell.Offset(0, 1).Value
frmCadastro.txtCidade.Value = ActiveCell.Offset(0, 2).Value
frmCadastro.txtEndereco.Value = ActiveCell.Offset(0, 3).Value
frmCadastro.txtFone.Value = ActiveCell.Offset(0, 4).Value
frmCadastro.txtEmail.Value = ActiveCell.Offset(0, 5).Value
frmCadastro.imgFoto.Picture = LoadPicture("")
frmCadastro.imgFoto.Picture = LoadPicture(ActiveCell.Offset(0, 6))
gstrFoto = ActiveCell.Offset(0, 6).Value
End Sub
'Limpa para inserir dados
Public Sub lsLimparDados()
On Error Resume Next
frmCadastro.cmbNome.Value = ""
frmCadastro.txtMatricula.Value = ""
frmCadastro.txtCidade.Value = ""
frmCadastro.txtEndereco.Value = ""
frmCadastro.txtFone.Value = ""
frmCadastro.txtEmail.Value = ""
frmCadastro.imgFoto.Picture = LoadPicture("")
End Sub
Public Sub lsForm()
frmCadastro.Show
End Sub
Após isso clique botão de Carregar Imagem no formulário e coloque o código abaixo:
Private Sub cmdFoto_Click()
On Error Resume Next
gstrFoto = Application.GetOpenFilename("Imagens jpg, *.jpg, Imagens bmp, *.bmp", 0, "Selecione a foto")
imgFoto = LoadPicture("")
imgFoto.Picture = LoadPicture(gstrFoto)
End Sub
Para Inserir dados no botão de inserir coloque o seguinte código:
Private Sub cmdInserir_Click()
Dim ltbCadastro As Object
Set ltbCadastro = ActiveSheet.ListObjects("tCadastro")
ltbCadastro.ListRows.Add AlwaysInsert:=True
ltbCadastro.DataBodyRange(ltbCadastro.ListColumns(1).DataBodyRange.Rows.Count, 1).Select
lsLimparDados
Set ltbCadastro = Nothing
End Sub
Para gravar os dados clique no botão gravar e coloque o seguinte código:
Private Sub cmdAlterar_Click()
lsDados
End Sub
E para excluir informações clique no botão Excluir e coloque o código abaixo:
Private Sub cmdExcluir_Click()
ActiveSheet.ListObjects("tCadastro").ListRows(ActiveCell.Row - 6).Delete
lsCarregarLista
End Sub
Colocar Imagens no Formulário VBA Excel
Para colocar as imagens nos botões e no formulário pegue as imagens da internet e cole na planilha primeiro.
Redimensione elas para o tamanho adequado e depois copie e volte ao VBE.
No formulário copie e cole a imagem no campo Picture das propriedades e cole.
Com isso teremos os dados no formulário.
Após isso pode chamar o formulário e já terá o cadastro aberto e funcionando no Excel.
Download Planilha de Formulário Avançado Inserir Alterar Excluir e Foto VBA Excel
Clique no botão abaixo para realizar o download do arquivo de exemplo: