Formulário VBA com Cadastro Excel

Aprenda como criar um formulário VBA com cadastro Excel passo-a-passo com imagem e grid.

Criar Formulário VBA

No Excel é possível criar formulários utilizando código VBA.

Para isso a primeira parte é habilitar a guia desenvolvedor, pra isso clique neste artigo e veja passo-a-passo como fazer: Habilitar Guia Desenvolvedor.

codigo vba excel de formulario

Tabela de Dados do Formulário

No nosso exemplo usamos uma tabela Excel aonde os dados dos formulários são salvos.

Como podemos ver temos os seguintes campos:

  • Seq.: Código sequencial autoimático.
  • Código: Código interno do produto.
  • Produto: Nome do produto.
  • Categoria: Descrição da categoria.
  • Fabricante: Nome do fabricante.
  • Descrição: Descrição completa do produto.
  • Foto: Caminho completo da imagem do produto.
tabela de dados excel com formulario

Formulário VBA Excel com Cadastro Excel

No nosso exemplo temos o cadastro abaixo com os campos que temos na nossa tabela, imagem do formulário e também a grid, que é uma tabela dentro do formulário e que exibe os dados que estão no Excel.

O formulário tem os botões e funcionalidades:

  1. Novo: Limpa todos os campos do formulário Excel.
  2. Excluir: Exclui a linha da tabela do Excel
  3. Salvar: Salva os dados do formulário na tabela, seja como inclusão ou como alteração de dados.
  4. Imagem: Imagem carregada à partir de um local no computador, bastando clicar no botão imagem e selecionar a mesma.
  5. Grid: Tabela no formulário à partir da tabela de cadastro de Produtos no Excel.
formulario de cadastro vba excel

O formulário é acionado no momento em que clica duas vezes na tabela do Excel, é carregado automaticamente o formulário com os dados da linha selecionada.

Código do Formulário VBA Excel

Para a criação das funcionalidades do formulário utilizamos os seguintes códigos VBA, ele é detalhado também no vídeo passo-a-passo.

Global lLinha       As Long
Global lstrImagem   As String

Public Sub lsCarregarImagem()
    Dim fd As FileDialog
    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    
    'Configurar o FileDialog para selecionar arquivos com imagem
    With fd
        .Title = "Selecione uma imagem"
        .Filters.Clear
        .Filters.Add "Imagens", "*.jpg, *.jpeg, *.gif, *.bmp"
        .AllowMultiSelect = False
        
        'Exibir o diálogo e carregar a imagem selecionada
        If .Show = -1 Then
            frmProduto.imgFoto.Picture = LoadPicture(.SelectedItems(1))
            lstrImagem = .SelectedItems(1)
        End If
    End With
    
End Sub

Public Sub lsExcluir()
    Produtos.Cells(lLinha, 1).EntireRow.Delete
    lsNovo
    MsgBox "Item Excluído!"
End Sub

Public Sub lsNovo()
    With frmProduto
        .lblSeq.Caption = Produtos.Cells(Produtos.Cells(Produtos.Rows.Count, 2).End(xlUp).Row, 2).Value + 1
        .txtCodigo.Value = ""
        .txtProduto.Value = ""
        .txtCategoria.Value = ""
        .txtFabricante.Value = ""
        .txtDescricao.Value = ""
        .imgFoto.Picture = LoadPicture("")
    End With
    
    lLinha = Produtos.Cells(Produtos.Rows.Count, 2).End(xlUp).Row + 1
End Sub

Public Sub lsSalvar()
    'Limpa a lista de produtos no formulário
    frmProduto.listProdutos.RowSource = ""
    
    With Produtos
        .Cells(lLinha, 3).Value = UCase(frmProduto.txtCodigo.Value)
        .Cells(lLinha, 4).Value = UCase(frmProduto.txtProduto.Value)
        .Cells(lLinha, 5).Value = UCase(frmProduto.txtCategoria.Value)
        .Cells(lLinha, 6).Value = UCase(frmProduto.txtFabricante.Value)
        .Cells(lLinha, 7).Value = UCase(frmProduto.txtDescricao.Value)
        .Cells(lLinha, 8).Value = UCase(lstrImagem)
    End With
    
    frmProduto.listProdutos.RowSource = "tProduto"
    
    MsgBox "Item Salvo!"
End Sub

Public Sub lsCarregar()
    On Error Resume Next
    
    With Produtos
        frmProduto.lblSeq.Caption = .Cells(lLinha, 2).Value
        frmProduto.txtCodigo.Text = .Cells(lLinha, 3).Value
        frmProduto.txtProduto.Text = .Cells(lLinha, 4).Value
        frmProduto.txtCategoria.Text = .Cells(lLinha, 5).Value
        frmProduto.txtFabricante.Text = .Cells(lLinha, 6).Value
        frmProduto.txtDescricao.Text = .Cells(lLinha, 7).Value
        frmProduto.imgFoto.Picture = LoadPicture("")
        frmProduto.imgFoto.Picture = LoadPicture(.Cells(lLinha, 8).Value)
    End With
    
    frmProduto.Show
End Sub

Com isso temos o código completo do VBA que faz o cadastramento, carregamento da grid e também o carregamento das imagens.

Download da Planilha Formulário VBA com Cadastro Excel

Para realizar o download desta planilha de exemplo clique no botão abaixo

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