Cadastro Excel VBA – Formulário inserir e limpar automaticamente

Cadastro Excel VBA – Formulário inserir e limpar automaticamente

Neste modelo de cadastro criado em Excel VBA, você tem um código que facilita muito o trabalho de criação de formulários.

No formulário você cria os objetos, TextBox, RadioButton, ComboBox, etc, e com uma simples configuração o sistema já está pronto par ainserir estes dados na sua planilha de cadastro.

Nesta primeira versão tenho apenas os botões Inserir e Limpar e o formulário é apenas um exemplo simples, porém com funções VBA muito úteis para a criação de qualquer tipo de formulário.

Vejamos como funciona:

Como criar seu formulário VBA

Formulário de cadastro VBA Excel automático

  1. Defina um nome para a sua pasta de trabalho Excel e salve ele com a extensão XLSM, é necessário que seja XLSM porque assim a planilha estará habilitada para macros, caso contrário todos os códigos VBA serão apagados.
  2. Defina uma planilha da sua pasta de trabalho e altere o nome conforme a sua necessidade, por exemplo Cadastro.
  3. Nesta planilha crie um cabeçalho par aos campos que serão salvos pelo seu formulário. No nosso exemplo temos os campos Nome, Endereço, Número, Cidade, UF e Sexo.
  4. Abra o editor de VBA. Caso não esteja habilitado, veja aqui como habilitar: Habilitando a guia desenvolvedor e copiando procedimentos VBA da internet.
  5. Na sua guia desenvolvedor localize a sua pasta de trabalho, destacada ao lado esquerdo.Formulário de cadastro VBA Excel automático
  6. Agora iremos criar o formulário de cadastro. Clique na guia Inserir e selecione UserForm. O sistema irá criar uma pasta chamada Formulários e inserir um formulário VBA.
  7. Clique duas vezes sobre a pasta Formulários e depois clique duas vezes sobre o formulário que acabou de criar.
  8. Clique no botão Caixa de Ferramentas.Formulário de cadastro VBA Excel automático 3
  9. O VBA irá abrir uma paleta de componentes que você pode utilizar no seu formulário.
  10. Pare com o mouse sobre o componente para ver os seus nomes.
  11. Clique sobre o componente Rótulo e arraste até o seu formulário.
  12. Clique sobre o componente com o botão direito e clique na opção Propriedades.
  13. Procure a propriedade Caption e altere o nome para Nome e ajuste o tamanho do componente.
  14. Repita a operação para incluir os campos Endereço, N.º, Cidade e UF e disponha os dados conforme a imagem.Formulário de cadastro VBA Excel automático 4
  15. Procure o objeto Caixa de Texto e arraste para o formulário, ao lado de Nome.
  16. Clique sobre o objeto arrastado e altere a propriedade Tag para a coluna da sua planilha criada no início que armazenará o nome digitado em seu cadastro. No caso a coluna escolhida foi A, então preencha o campo Tag com A.
  17. Repita a operação para os campos Endereço, N.º e Cidade, alterando a propriedade Tag de cada componente para B, C e D respectivamente, conforme as colunas que armazenarão estas informações.Formulário de cadastro VBA Excel automático 5
  18. Volte para a sua planilha clicando no ícone do Excel na barra de tarefas do Windows e em outra planilha crie uma lista com as UFs.
  19. Selecione a lista e altere o nome do intervalo para UF.
    Formulário de cadastro VBA Excel automático 6
  20. Volte para o Editor do VBA e insira uma Caixa de Combinação.
  21. Altere a propriedade RowSource para UF, isto fará com que a caixa de combinação mostre os estados brasileiros quando o formulário estiver sendo executado.
  22. Altere a propriedade Tag da caixa de combinação para E, coluna que terá esta informação.
  23. Selecione e insira o objeto Quadro. Altere a propriedade Caption para Sexo.
  24. Selecione e arraste para dentro do quadro dois objetos Botão de Opção. Altere a propriedade Caption dos dois para Feminino e Masculino respectivamente.
  25. Altere a propriedade Tag dos dois botões de opção para F. Esta coluna guardará o sexo.Formulário de cadastro VBA Excel automático 7
  26. Insira dois botões e altere a propriedade Caption dos dois para Novo e Inserir respectivamente.
  27. Clique com o botão direito sobre o formulário e selecione a opção Exibir código. Copie e cole o código abaixo no formulário. Este código é responsável pelo preenchimento das informações na planilha.

 

'Identifica o tipo do objeto e insere se for um dos tipos definidos
Private Sub lsInserir(ByRef lTextBox As Variant, ByVal lSheet As String, ByVal lColunaCodigo As Long, ByVal lUltimaLinha As Long)
    If (TypeOf lTextBox Is MSForms.TextBox) Or (TypeOf lTextBox Is MSForms.ComboBox) Then
        Sheets(lSheet).Range(lTextBox.Tag & lUltimaLinha).Value = lTextBox.Text
    Else
        If TypeOf lTextBox Is MSForms.OptionButton Then
            If lTextBox.Value = True Then
                Sheets(lSheet).Range(lTextBox.Tag & lUltimaLinha).Value = lTextBox.Caption
            End If
        End If
    End If
End Sub

'Loop por todos os componentes da tela
'formulario = Nome do UserForm atual
'lSheet = Nome da planilha aonde irão ser inseridos os valores
'lColunaCodigo = Coluna de referência para a inserção dos dados
Public Function lsInserirTextBox(formulario As UserForm, ByVal lSheet As String, ByVal lColunaCodigo As Long)
    Dim controle            As Control
    Dim lUltimaLinhaAtiva   As Long
    
    lUltimaLinhaAtiva = Worksheets(lSheet).Cells(Worksheets(lSheet).Rows.Count, lColunaCodigo).End(xlUp).Row + 1
    
    For Each controle In formulario.Controls
        lsInserir controle, lSheet, lColunaCodigo, lUltimaLinhaAtiva
    Next
End Function

'Limpa todos os objetos TextBox da tela
Public Function lsLimparTextBox(formulario As UserForm)
    Dim controle            As Control
    
    For Each controle In formulario.Controls
        If TypeOf controle Is MSForms.TextBox Then
            controle.Text = ""
        End If
    Next
End Function

28. Clique duas vezes sobre o botão Novo. Será criado o método Click para este botão. Cole entre o sub e o end sub o código abaixo, que irá chamar o procedimento para limpar o formulário. Não coloque a primeira e a última linha, que já estão preenchidas.

 

'Aciona o botão de limpar
Private Sub CommandButton2_Click()
    lsLimparTextBox frmCadastro
    
    TextBox1.SetFocus
End Sub

29. Clique duas vezes sobre o botão Inserir. Da mesma forma que o botão Novo será criado o método Click. Cole o código abaixo:

'Aciona o botão de inserir
Private Sub CommandButton1_Click()
    lsInserirTextBox frmCadastro, "Cadastro", 1
    
    lsLimparTextBox frmCadastro
    
    TextBox1.SetFocus
End Sub

30. Pressione o botão F5 para executar o formulário.

Se quiser baixe o nosso exemplo criado e clique no botão Formulário para testar o nosso projeto. Veja que se você incluir outros objetos Caixa de combinação, Caixa de texto ou Botão de opção e configurar a coluna no campo Tag destes objetos, o sistema automaticamente irá preencher estas colunas com esta informação, poupando muito código fonte VBA, tempo e depuração para validar o formulário.

Para testar, basta preencher os dados e clicar no botão Inserir, veja que automaticamente os dados são levados do formulário para a planilha.

Da mesma forma para limpar e começar um novo formulário clique no botão Novo e os dados serão automaticamente limpos.

Brinque com o formulário, incluindo novos campos com e indicando novas colunas para preencher no campo Tag. Veja como pode ser útil este exemplo de formulário.

Clique no botão abaixo para baixar o exemplo aplicado em uma planilha.

Abraço
Marcos Rieper