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.
Criar eventos para botões de controle é similar ao que foi feito para o UserForm_Inicialize().
Para criar um evento quando houver um clique (no modo de exibição) no botão de comando (Private SubCommandButton1_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.
É 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().
Para adicionar funcionalidades quando a barra de rotação é alterada é preciso de uma Sub de Evento específica (Private SubSpinButton1_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.
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.
Entre na planilha e adicione na primeira linha os títulos da forma como o UserForm irá inserir os dados
Exercícios Sugeridos
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.
© 2024 SuperExcelVBA | SOBRE