Como criar formulário no Excel para trabalhar com dados
Neste artigo você vai aprender como criar formulário no Excel para editar base de dados, de forma rápida e simples com apenas alguns passos.
Gerenciar bases de dados no Excel pode ser desafiador, especialmente quando erros de cadastro ocorrem ou atualizações são necessárias.
Formulários, sejam nativos do Excel ou personalizados com VBA, tornam a interface mais amigável, facilitam a busca em grandes bases e garantem maior confiabilidade.
Neste artigo, exploramos como usar dois tipos de formulário. O formulário nativo do Excel, para inserir, editar, excluir e filtrar dados; e também UserForm, com VBA, para edições mais avançadas, como cadastro de funcionários.
Para fazer o download do(s) arquivo(s) utilizados na aula, preencha com o seu e-mail:
Não vamos te encaminhar nenhum tipo de SPAM! A Hashtag Treinamentos é uma empresa preocupada com a proteção de seus dados e realiza o tratamento de acordo com a Lei Geral de Proteção de Dados (Lei n. 13.709/18). Qualquer dúvida, nos contate.
Por que usar formulários no Excel?
Como os formulários ajudam no gerenciamento de dados?
Além de serem mais profissionais, formulários simplificam a interação com planilhas e reduzem erros.
Suas principais vantagens incluem:
- Interface amigável: Facilita a inserção e edição de dados.
- Busca eficiente: Ideal para localizar informações em bases grandes.
- Confiabilidade: Validações evitam erros de preenchimento.
- Profissionalismo: Apresenta dados de forma organizada e visualmente atraente.
Como ativar e usar o formulário nativo do Excel?
O Excel possui um formulário nativo que não exige programação, ideal para gerenciar listas simples, como tarefas ou contatos. Para ativá-lo:
- Formate a planilha como tabela: Selecione os dados e use Ctrl + Shift + T (ou Ctrl + T). Isso organiza os dados, reduz erros e melhora a compatibilidade com o formulário.
- Adicione o comando de formulário: No Menu de Acesso Rápido, clique na seta > Mais Comandos > Todos os Comandos > selecione Formulário (ícone cinza) > Adicionar > OK.
- Use o formulário: Clique no ícone do formulário no Menu de Acesso Rápido para abrir uma interface com os campos da sua tabela.
Como gerenciar dados com o formulário nativo?
O formulário nativo oferece várias funções:
- Inserir dados: Clique em "Novo", preencha campos (ex.: "Tarefa: Gravar Aula", "Responsável: Fred", "Status: Não Iniciado") e clique em "Novo" para adicionar à tabela.
- Editar registros: Navegue com as setas, altere um campo (ex.: mude "Status" de "Em Andamento" para "Concluído") e clique em "Novo" para salvar.
- Excluir dados: Selecione um registro (ex.: "Organização de Recursos"), clique em "Excluir" e confirme para removê-lo.
- Filtrar dados: Use "Critérios" para buscar registros específicos (ex.: tarefas com status "Não Iniciado") e navegue com "Localizar Próxima" ou "Localizar Anterior".
| Função | Descrição |
|---|---|
| Inserir | Adiciona novas linhas à tabela |
| Editar | Atualiza dados existentes |
| Excluir | Remove registros com confirmação |
| Filtrar | Busca registros por critérios específicos |
Como criar UserForm para editar bases de dados com formulário?
Para conseguir editar as bases de dados, deveremos criar um código que seja associado a um formulário específico no ambiente do VBA. No nosso exemplo, temos uma empresa com cadastro de funcionários feito numa base no ambiente do Excel, com nome, sexo, área, CPF e salário (em 1).

Lembrando que no nosso minicurso gratuito ensinamos como criar formulário no Excel e nesse post iremos apenas apresentar o código por trás dele para fazer as edições nessa base. Para criá-lo, precisamos entrar no ambiente do VBA (Alt + F11 ou Alt + Fn + F11), onde temos o UserForm pronto.
O formulário do nosso exemplo é o userform_edicao. Iremos então, no ambiente do VBA, clicar com o botão direito do mouse nele (em 2 na imagem acima) e em seguida em Exibir código (em 3 na imagem acima), para ver o código por trás dele.
Em primeiro lugar, queremos que o UserForm, ao ser aberto, carregue as informações da tabela de dados. Então, devemos passar comandos para esse UserForm fazer esse carregamento ao ser aberto.
Para isso, devemos selecionar no VBA que objeto queremos modificar e que ação faremos nele para disparar o código. No caso, queremos que, quando o userform_edicao (nosso UserForm) inicie (Initialize), carregue as informações. Vamos selecioná-los em 1 (UserForm) e em 2 (Initialize).

Ao selecionar os que queremos, ficará assim:

Automaticamente o VBA começará a escrever uma “Private Sub UserForm_Initialize()” (em branco inicialmente). Nosso código ficará da seguinte maneira para ele carregar as informações:

Onde:
Private Sub UserForm_Initialize() é a instrução que inicia nosso código de “início” do UserForm.
linha = Sheets("Cadastro").Range("A1").End(xlDown).Row é a instrução que vai nos retornar, na aba “Cadastro”, a partir da célula A1, a última linha preenchida da tabela de informações, e será gravada numa variável. Ela vai ser a nossa linha limite, que será atualizada cada vez que abrirmos o UserForm, garantindo que qualquer nova linha inserida será carregada pelo código.
caixa_nome.RowSource = "Cadastro!A2:A" & linha é a instrução que vai passar para a caixa_nome (lista suspensa de Nomes dos funcionários) que sua fonte de dados vai da célula A2 até a célula na coluna A correspondente à última linha preenchida achada com a instrução anterior (variável linha).
caixa_cpf.RowSource = "Cadastro!D2:D" & linha é a instrução que vai passar para a caixa_cpf (lista suspensa de CPFs dos funcionários) que sua fonte de dados vai da célula D2 (coluna D e linha 2) até a célula na coluna D correspondente à última linha preenchida achada com a segunda instrução (variável linha). Lembrando que só existirá CPF se existir um nome cadastrado no sistema para um funcionário, então podemos usar a mesma variável "linha" no último comando e nesse.
linha = Sheets("Fonte").Range("C2").End(xlDown).Row é a instrução que vai nos dizer, na aba “Fonte”, quantos tipos teremos de opções para serem alterados no formulário de edição. Ela vai nos retornar a última linha preenchida dessa lista de tipos criada na tabela “Fonte”, e será armazenada na variável linha.
Observe que essa lista de tipos na aba “Fonte” (imagem abaixo) vai coincidir com as colunas da nossa tabela de dados cadastrados (Área, CPF, Nome, Salário, Sexo).

caixa_tipo.RowSource = "Fonte!C3:C" & linha é instrução que vai passar para a caixa_tipo (lista de tipos de dados na aba “Fonte”) que sua fonte de dados vai da célula C3 (coluna C e linha 3) até a célula na coluna C correspondente à última linha preenchida (linha 7, no exemplo) da lista de tipos, achada com a última instrução.
End Sub é a instrução que representa o fim dessa subrotina de comandos
Até agora carregamos as informações da tabela de cadastro e garantimos que ela será atualizada toda vez que for aberto o formulario na planilha. Vamos para o código de edição de base de dados.

Para editar informações, devemos disparar o código que veremos a seguir através do clique no botão OK (em verde, acima). Para escrever esse código, devemos selecionar nas listas suspensas o objeto (botao_ok) e a ação de clique (Click), como observado na imagem abaixo.

O código que rodará ao clicar no botão "OK" do formulário será o seguinte (Blocos 1, 2 e 3):

Ao longo do código temos várias estruturas condicionais (If). Ou seja, teremos condições a serem atendidas para rodar o código ao fazer uma edição, para garantir que temos as informações suficientes para identificar um funcionário e editar seus dados.
Vamos para a explicação do Bloco 1 do código:
Private Sub botao_ok_Click()
If caixa_nome.Value <> "" Then
nome = caixa_nome.Value
linha = Sheets("Cadastro").Cells.Find(nome).Row
ElseIf caixa_cpf.Value <> "" Then
cpf = caixa_cpf.Value
linha = Sheets("Cadastro").Cells.Find(cpf).Row
Else
MsgBox ("Preencher o Nome ou o CPF!")
Exit Sub
End IfLeitura Bloco 1:
Se a caixa de nome (caixa_nome) não estiver vazia (for diferente de vazio), então, o que tiver escrito na caixa de nome será registrado na variável “nome”, e procuraremos a célula em que estiver escrito o que estará na variável "nome". Ao encontrar, guardaremos a linha da célula achada na variável “linha”, que corresponde àquele nome na base de dados.
Se a caixa de CPF (caixa_cpf) não estiver vazia (for diferente de vazio), então, o que tiver escrito na caixa de CPF será registrado na variável “cpf”, e procuraremos a célula em que estiver escrito esse CPF escrito na caixa de CPF. Ao encontrar, guardaremos a linha da célula achada na variável “linha” que corresponde àquele CPF na base de dados.
Se nome nem CPF estiverem preenchidos (ambos forem iguais a vazio), teremos uma mensagem alertando para “Preencher o Nome ou o CPF!” na tela e o código será abortado. Ou seja, o comando Exit Sub irá dizer para o código parar nesse ponto (não irá ler o que estiver escrito abaixo), mas dará a opção para o usuário preencher novas informações no formulário sem fechá-lo.
Se tudo ocorrer da forma ideal teremos a linha onde deveremos fazer a edição. Vamos para o Bloco 2.
If caixa_tipo.Value = "Nome" Then
coluna = 1
ElseIf caixa_tipo.Value = "Sexo" Then
coluna = 2
ElseIf caixa_tipo.Value = "Área" Then
coluna = 3
ElseIf caixa_tipo.Value = "CPF" Then
coluna = 4
ElseIf caixa_tipo.Value = "Salário" Then
coluna = 5
Else
MsgBox ("Preencher o Tipo!")
Exit Sub
End IfLeitura Bloco 2:
O valor da caixa_tipo é o tipo de dado que o usuário do formulário seleciona e quer editar. Ele que comandará em que coluna faremos a alteração na tabela de cadastro de funcionários.
Se na caixa_tipo estiver selecionado “Nome”, guardaremos a coluna 1 na variável coluna. Se estiver selecionado “Sexo”, a variável receberá o valor 2. Se “Área” estiver selecionada, receberá o valor 3. Se “CPF” estiver selecionado, receberá o valor 4. E, se “Salário” estiver selecionado, o valor 5.
Se essa caixa estiver vazia, ou seja, o usuário não selecionar nada nela (lista), será exibida uma mensagem para “Preencher o Tipo!” na tela, e o código será abortado. Por consequência, ele não continuará, mas as informações ficam carregadas no formulário e podem ser aproveitadas.
Assim, se tudo ocorrer bem, saberemos em que coluna fazer a edição, de acordo com o número que a variável coluna receberá.
Tudo correndo bem, até aqui teremos linha e coluna para fazer a modificação desejada. A linha pela pesquisa de nome ou CPF, e a coluna pelo tipo a ser alterado. Vamos agora para o Bloco 3.
If caixa_valor.Value <> "" Then
Sheets("Cadastro").Cells(linha, coluna).Value = caixa_valor.Value
Else
MsgBox ("Preencher o novo valor!")
Exit Sub
End If
Unload userform_edicao
End SubLeitura Bloco 3:
Se a caixa_valor estiver preenchida com algo (for diferente de vazio), a célula com endereço dado a partir das variáveis (linha e coluna) encontradas nos blocos 1 e 2 receberá o que for digitado nessa caixa_valor. Em seguida irá descarregar o formulário (apagar as informações selecionadas e escritas nele), porque já fez a edição da forma correta.
Caso não tenha nada escrito (caixa_valor estiver vazia), o programa exibirá uma mensagem de “Preencher o novo valor!”, e abortará o código. Ainda dá a opção do usuário digitar algo nesse campo com as informações o formulário ainda carregadas.
Se tudo for preenchido corretamente e ocorrer bem, com linha e coluna conhecidas, teremos uma célula específica para fazer a edição, e poderemos inserir o que for digitado na caixa_valor nessa célula alvo e o formulário será descarregado. Finalmente vamos para o Bloco 4.
<strong>Private Sub botao_x_Click()</strong>
<strong>Unload userform_edicao</strong>
<strong>End Sub</strong>Leitura Bloco 4:
O bloco 4 diz respeito ao clique no X do formulário. No código temos o Unload do userform_edicao. Isso significa simplesmente o comando para o VBA descarregar o formulário e as informações nele contidas. Ou seja, irá fechá-lo e apagará as informações selecionadas ou escritas no formulário. Caso queira fazer uma outra edição, será necessário, então, abrir e digitar tudo outra vez.
Assim, conseguimos fazer um código para editar bases de dados de cadastro de funcionários de uma empresa. Ele funciona com condições que devem ser respeitadas para fazer a atualização, garantindo uma maior confiabilidade.
Você pode ter exatamente essa necessidade ou alguma aplicação parecida que seja composta por um cadastro que possa ter informações a serem editadas/atualizadas. Esperamos que seja bastante útil para você!
Qual é a melhor opção: formulário nativo ou UserForm?
A pergunta deve ser: quando usar cada tipo de formulário? O formulário nativo e o UserForm com VBA têm propósitos distintos:
| Recurso | Formulário Nativo | UserForm com VBA |
|---|---|---|
| Facilidade | Sem programação | Requer VBA |
| Personalização | Limitada | Alta, com validações |
| Ideal para | Listas simples (ex.: tarefas) | Cadastros complexos (ex.: funcionários) |
| Validações | Básicas | Avançadas (ex.: condicionais) |
O formulário nativo é perfeito para tarefas rápidas e planilhas menores, enquanto o UserForm é ideal para cenários corporativos que exigem maior controle.
Conclusão
Formulários no Excel transformam o gerenciamento de dados, seja com a praticidade do formulário nativo ou a flexibilidade de um UserForm com VBA. O formulário nativo permite inserir, editar, excluir e filtrar dados sem programação, enquanto o UserForm oferece validações avançadas para cadastros complexos. Use essas ferramentas para organizar planilhas e impressionar no trabalho com soluções profissionais e eficientes!
Aprenda mais sobre Excel com mais cursos e guias como este em nosso blog!
Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo!
Hashtag Treinamentos
Para acessar outras publicações de VBA, clique aqui!

