Para criar um formulário de cadastro no Excel com VBA, abra o editor (Alt+F11), vá em Inserir > UserForm, arraste caixas de texto e um botão de comando da Caixa de Ferramentas para desenhar os campos, e no código do botão use Cells(linha;coluna).Value = TextBox1.Text para gravar cada campo preenchido numa nova linha da planilha.
Você já teve uma planilha de cadastro onde outras pessoas digitam diretamente nas células, e viu alguém apagar uma fórmula por engano, preencher a coluna errada, ou digitar um dado numa linha já ocupada por outro registro?
Sem uma interface própria para o cadastro, deixar a digitação direto na planilha significa que qualquer pessoa tem acesso a todas as fórmulas e dados ao mesmo tempo, aumentando o risco de erro e dificultando a validação de campos obrigatórios antes de salvar um registro novo.
Neste artigo iremos mostrar como criar um UserForm no Excel, adicionar campos de texto e um botão, e usar VBA para gravar os dados preenchidos numa nova linha da planilha, sempre abaixo do último registro existente.
O que é um UserForm e quando vale a pena usar
Um UserForm é uma janela própria, criada dentro do editor VBA, com campos como caixas de texto, rótulos e botões — parecida com um formulário de cadastro de qualquer sistema. Ele evita que quem preenche o cadastro tenha acesso direto às células da planilha, reduzindo erros de digitação em fórmulas e concentrando a entrada de dados numa interface mais simples e controlada.
Inserindo o UserForm no editor VBA
Com o editor VBA aberto (Alt+F11), clique com o botão direito sobre o nome do projeto no Project Explorer, escolha Inserir > UserForm. Uma janela em branco aparece, junto com a Caixa de Ferramentas — se ela não abrir automaticamente, vá em Exibir > Caixa de Ferramentas no menu do editor.
Adicionando os campos com a Caixa de Ferramentas
Na Caixa de Ferramentas, clique no ícone de Rótulo (Label) e desenhe um retângulo no formulário para o texto “Nome:”, depois clique no ícone de Caixa de Texto (TextBox) e desenhe o campo ao lado do rótulo, onde a pessoa vai digitar. Repita esse par de rótulo + caixa de texto para cada campo do cadastro — por exemplo, Nome, E-mail e Telefone — e finalize adicionando um Botão de Comando (CommandButton), que será o botão “Salvar”.
Nomeando os controles corretamente
Cada controle adicionado recebe um nome padrão (TextBox1, TextBox2, CommandButton1). Para um código mais organizado, selecione cada campo, abra a janela de Propriedades (tecla F4) e altere o valor de (Name) para algo descritivo, como txtNome, txtEmail e btnSalvar — isso deixa o código bem mais legível na hora de referenciar cada campo.
Encontrando a próxima linha vazia da planilha automaticamente
Antes de gravar um novo registro, o código precisa descobrir qual é a próxima linha livre na planilha, para não sobrescrever um cadastro já existente. A forma mais comum é usar Cells(Rows.Count;1).End(xlUp).Row + 1 — esse comando parte da última linha possível da planilha, sobe até encontrar a última célula preenchida na coluna A, e soma 1 para chegar na primeira linha realmente vazia.
Código do botão “Salvar”: gravando os dados na planilha
Dê um duplo clique no botão dentro do editor de UserForm para abrir automaticamente o evento de clique dele, e escreva o código de gravação:
| Linha | Código |
|---|---|
| 1 | Private Sub btnSalvar_Click() |
| 2 | Dim linha As Long |
| 3 | linha = Cells(Rows.Count;1).End(xlUp).Row + 1 |
| 4 | Cells(linha;1).Value = txtNome.Text |
| 5 | Cells(linha;2).Value = txtEmail.Text |
| 6 | Cells(linha;3).Value = txtTelefone.Text |
| 7 | MsgBox “Cadastro salvo com sucesso!” |
| 8 | End Sub |
Limpando o formulário depois de salvar
Para deixar o UserForm pronto para o próximo cadastro sem fechar a janela, adicione, logo antes do MsgBox, os comandos que apagam o conteúdo de cada caixa de texto: txtNome.Text = “”, txtEmail.Text = “” e txtTelefone.Text = “”, devolvendo o formulário ao estado em branco.
Exibindo o formulário com um botão na planilha
Para abrir o UserForm sem precisar entrar no editor VBA, crie uma macro simples num módulo comum: Sub AbrirCadastro(): UserForm1.Show: End Sub, e associe essa macro a um botão criado diretamente na planilha. Assim, quem for usar o cadastro só precisa clicar nesse botão para abrir a janela do formulário.
Validando campos obrigatórios antes de salvar
Para impedir um cadastro incompleto, adicione uma verificação no início do código do botão Salvar: If txtNome.Text = “” Then MsgBox “Preencha o nome”: Exit Sub — se o campo Nome estiver vazio, uma mensagem de aviso aparece e o Exit Sub interrompe a execução antes de gravar qualquer coisa na planilha.
Exemplo prático: resultado na planilha
Depois de preencher o formulário três vezes com dados diferentes, a planilha por trás do UserForm fica assim, cada envio numa nova linha, sem precisar digitar diretamente nas células:
| Nome | Telefone | |
|---|---|---|
| Fernanda Alves | fernanda@email.com | (11) 98888-1234 |
| Ricardo Nunes | ricardo@email.com | (21) 97777-5678 |
| Patrícia Lima | patricia@email.com | (31) 96666-9012 |
Erros comuns
Um erro frequente é referenciar o nome padrão do controle (como TextBox1) no código depois de já ter renomeado o campo pela janela de Propriedades — o VBA aponta erro de “variável não definida” porque o nome antigo não existe mais. Outro erro comum é esquecer o Private Sub gerado automaticamente ao dar duplo clique no botão, e criar um segundo procedimento manualmente com o mesmo nome, o que gera conflito de nomes duplicados dentro do mesmo formulário.
Disponibilidade
UserForm é um recurso do VBA disponível no Excel para Windows e Mac desde versões antigas (2007 em diante, com pequenas diferenças de interface entre elas). O Excel Online e o Google Sheets não suportam UserForm nem VBA — no Google Sheets, o equivalente mais próximo seria construir uma interface com Apps Script e HTML Service.
Perguntas frequentes
Preciso saber programar do zero para criar um UserForm?
Não. Desenhar os campos (rótulos, caixas de texto, botão) é uma tarefa visual de arrastar e soltar na Caixa de Ferramentas; só o código do botão Salvar exige escrever algumas linhas simples de VBA, como as mostradas neste artigo.
Como faço o formulário abrir automaticamente quando o arquivo é aberto?
Adicione o comando UserForm1.Show dentro do evento Workbook_Open, localizado no módulo “Esta_Pasta_de_Trabalho” (ThisWorkbook) no Project Explorer — assim o formulário aparece assim que o arquivo é aberto, sem precisar clicar em nenhum botão.
Dá para usar caixas de seleção (ComboBox) em vez de caixa de texto livre?
Sim, e é recomendado para campos com opções fixas, como Estado ou Categoria — a ComboBox reduz erros de digitação, já que a pessoa escolhe de uma lista pré-definida em vez de digitar o valor livremente.
Veja também: Como Fazer uma Barra de Progresso no Excel com VBA e Botão de Controle de Formulário no Excel.
Compartilhe ou Comente
Se você curtiu esse artigo aonde mostramos como criar um formulário de cadastro (UserForm) no Excel com VBA, desde o desenho dos campos até o código que grava os dados numa nova linha da planilha, compartilhe com as suas redes sociais e não se esqueça de deixar um comentário aqui embaixo caso você tenha ficado com alguma dúvida.
Sua planilha de cadastro ainda é preenchida direto nas células? Vai criar um UserForm para reduzir os erros de digitação da sua equipe? Conta para nós nos comentários!