Interface UserForm Planilha


Uma das grandes vantagens do UserForm é a sua interação com as planilhas do Excel, dando a elas dinamismo e uma interface diferenciada.

No exemplo que viemos desenvolvendo, relacionado a Layout de UserForm e a Eventos de UserForm, ficou pendente configurar os botões de comando e a barra de rotação do UserForm para utilização total de suas funcionalidades. Será preciso também estabelecer uma relação entre os dados que serão inseridos, o formulário e a planilha.


Adicionando Evento aos Controles

Criar eventos para botões de controle é similar ao que foi feito para o UserForm_Inicialize().


Evento de clique no botão

Para criar um evento quando houver um clique (no modo de exibição) no botão de comando (Private SubCommandButton1_Click()):

  1. Clique com botão direito no UserForm (Project Explorer)
  2. Selecione Exibir Código
  3. Na janela Dropdown da esquerda selecione CommandButton1
  4. Na janela Dropdown da direita selecione Click

O VBE apresentará o seguinte código:

Private Sub CommandButton1_Click()

End Sub

Só será encontrado a opção CommandButton1 no Dropdown da esquerda caso o botão de comando () já tenha sido previamente adicionado ao seu UserForm e sua propriedade (Name) não tenha sido alterada.

É possível criar este evento simplesmente dando duplo clique no controle na tela de edição do UserForm.

Inserir UserForm

É preciso criar eventos para cada um dos botões do UserForm.

No caso teremos três eventos de botão: Private SubCommandButton1_Click(), Private SubCommandButton2_Click() e Private SubCommandButton3_Click().


Evento de mudança de texto da barra de rotação

Para adicionar funcionalidades quando a barra de rotação é alterada é preciso de uma Sub de Evento específica (Private SubSpinButton1_Change()):

  1. Clique com botão direito no UserForm (Project Explorer)
  2. Selecione Exibir Código
  3. Na janela Dropdown da esquerda selecione SpinButton1
  4. Na janela Dropdown da direita selecione Change

O VBE apresentará o seguinte código:

Private Sub SpinButton1_Change()

End Sub

Só será encontrado a opção SpinButton1 no Dropdown da esquerda caso o botão de rotação () já tenha sido previamente adicionado ao seu UserForm e sua propriedade (Name) não tenha sido alterada.


Configurando Eventos dos Controles

Podemos adicionar funcionalidade aos eventos criados adicionando os seguintes códigos a cada evento criado:

'Referente ao botão Cadastrar do UserForm
Private Sub CommandButton1_Click()

    Dim LinVazia As Long

    'Determina a linha vazia
    LinVazia = Worksheets("Planilha1").Cells(Rows.Count, 1).End(xlUp).Row + 1

    'Adiciona o nome e a idade as colunas "A" e "B" respectivamente
    Cells(LinVazia, 1).Value = TextBox1.Value
    Cells(LinVazia, 2).Value = TextBox2.Value

    'Identifica o botão de opção selecionado e adiciona o sexo a coluna "C"
    Select Case True

        Case OptionButton1
        Cells(LinVazia, 3).Value = "Masculino"

        Case OptionButton2
        Cells(LinVazia, 3).Value = "Feminino"

        Case OptionButton3
        Cells(LinVazia, 3).Value = "Outros"

    End Select

    'Adiciona o departamento a coluna "D"
    Cells(LinVazia, 4).Value = ComboBox1.Value

    'Adiciona a unidade a coluna "E"
    Cells(LinVazia, 5).Value = ListBox1.Value

    'Identifica os opcionais selecionados e os adiciona a coluna "F"
    If CheckBox1.Value = True Then
        Cells(LinVazia, 6).Value = CheckBox1.Caption
    End If

    If CheckBox2.Value = True Then
        If Not IsEmpty(Cells(LinVazia, 6).Value) Then
            Cells(LinVazia, 6).Value = Cells(LinVazia, 6).Value & "; " & CheckBox2.Caption
        Else
            Cells(LinVazia, 6).Value = CheckBox2.Caption
        End If
    End If

End Sub

No código acima, LinVazia determina dinamicamente a primeira linha vazia da "Planilha1" (de baixo para cima).

Com os comandos Cells assossiados a valores de controles podemos guardar as informações do UserForm na planilha.


'Referente ao botão Limpar do UserForm
Private Sub CommandButton2_Click()

    Call UserForm_Initialize

End Sub

O código acima irá recarregar o UserForm na memória a partir da Sub de evento UserForm_Initialize(), limpando todas as opções selecionadas


'Referente ao botão Cancelar do UserForm
Private Sub CommandButton3_Click()

    Unload UserForm1

End Sub

O código acima irá retirar da memória o UserForm, fechando-o.


'Referente a barra de rotação do UserForm
Private Sub SpinButton1_Change()

    TextBox2.Value = SpinButton1.Value

End Sub

O código acima irá adicionar a funcionalidade de alterar a idade apresentada na caixa de texto conforme o usuário utilize o controle de botão de rotação.


Testando o UserForm

Entre na planilha e adicione na primeira linha os títulos da forma como o UserForm irá inserir os dados

Dados UserForm
Testando UserForm
Dados UserForm


Fixando o Aprendizado

Exercícios Sugeridos

Urna de Votação Jogo da Forca


SuperExcelVBA.com é um site voltado ao aprendizado de VBA. Exemplos e explicações podem ter sido simplificados para maior e mais veloz compreensão. Estamos constantemente nos atualizando e corrigindo erros, porém não existe garantia sobre o conteúdo disponível no site. Todos os direitos reservados.

Excel ® é uma marca registrada da Microsoft Corporation.

© 2019 SuperExcelVBA | SOBRE

Protected by Copyscape