Formulário VBA Excel Inserir Alterar Excluir e Foto

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.

formulário vba 1

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
  • E-mail
  • 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.

formulário vba 2

Clique no botão abaixo e desenhe no formulário uma imagem conforme vemos abaixo.

formulário vba 3

Na Caixa de Ferramentas clique no botão e desenhe logo abaixo da imagem, é aonde iremos carregar os dados.

formulário vba 4

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.

formulário vba 5

Ficará conforme abaixo:

formulário vba 6

Desenhe as caixas de texto ao lado dos labels para criar o formulário com os campos conforme abaixo:

formulário vba 7

Clique na caixa de ferramentas e insira os botões Inserir, Gravar e Excluir conforme no formulário abaixo

formulário vba 8

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.

formulário vba 9

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:

Baixe a planilha


Marcos Rieper

Pai, marido, professor e consultor em Excel.

Obrigado por ler este artigo, este blog foi criado para difundir o conhecimento em Excel à todos.

Divulgamos novos artigos nas redes sociais, basta clicar nos ícones abaixo.

Excel não precisa ser complicado

Assine nossa newsletter e receba dicas práticas para dominar o excel