Ao terminar o layout do UserForm é preciso realizar configurações para que as opções que o usuário terá em cada controle tenham funcionalidade. Para tal, utilizaremos de eventos do UserForm.
Desta forma poderemos:
Para customizar os vários controles (E.g. caixas de combinação) desde o início da utilização do UserForm empregaremos o evento Initialize (de inicialização). Este evento executa o código da Sub toda vez que o UserForm for carregado na memória do Excel (por exemplo quando entra em modo de exibição com ou ).
Para criar um evento de inicialização:
Caso não exista Sub alguma na Janela de Código, adicione manualmente o evento descrito no código abaixo:
Private Sub UserForm_Initialize() End Sub
O VBA poderá ter criado o evento Private SubUserForm_Click() automaticamente, delete-o se desejar (no caso estamos configurando Initialize e não Click).
Por padrão as Subs criadas automaticamente através dos menus do VBE são Private. Altere para Public Sub caso queira acessá-las não somente pelo UserForm.
Daremos funcionalidade ao exemplo criado em Layout de UserForm
Certifique-se de que o nome - propriedade (Name) - dos controles criados na etapa de layout sejam os mesmos que os utilizados na Sub abaixo do evento Inicialize (de inicialização), e que eles estejam pareados corretamente para adicionar uma funcionalidade dinâmica ao UserForm (no exemplo TextBox1 é referente ao nome, TextBox2 a idade e assim por diante).
Private Sub UserForm_Initialize()
'Limpa a caixa de texto
TextBox1.Value = ""
'Preenche a idade inicial
TextBox2.Value = 30
'Determina a idade inicial
SpinButton1.Value = 30
'Limpa os botões de opção
OptionButton1.Value = False
OptionButton2.Value = False
OptionButton3.Value = False
'Limpa a caixa de combinação
ComboBox1.Clear
'Preenche a caixa de combinação
With ComboBox1
.AddItem "Compras"
.AddItem "Financeiro"
.AddItem "Jurídico"
.AddItem "Planejamento"
.AddItem "Recursos Humanos"
.AddItem "TI"
.AddItem "Vendas"
.Style = 2 'Impede que o usuário entre um input diferente do que consta na lista
End With
'Limpa a caixa de listagem
ListBox1.Clear
'Preenche a caixa de listagem
With ListBox1
.AddItem "Jardins"
.AddItem "Itaim Bibi"
.AddItem "Bela Vista"
End With
'Limpa as caixas de seleção
CheckBox1.Value = False
CheckBox2.Value = False
End Sub
Uma forma de exibir o UserForm é executando uma macro como a seguinte:
Sub ShowForm()
UserForm1.Show
End Sub
Esta macro, inserida em um , pode ser associada a um botão inserido na planilha do Excel, ou então, ser executada em resposta a um evento do usuário.
Observe que após configurado o evento Inicialize, caso o UserForm seja chamado (Show) as opções dos botões já estarão disponíveis:
Ainda será preciso realizar mais procedimentos para que o UserForm tenha todas as funcionalidades esperadas do formulário (E.g. funcionamento dos botões, funcionamento da barra de rotação, etc.).
Ao executar o comando Show e exibir o UserForm usualmente a planilha fica bloqueada para edição, porém podemos alterar isso com parametrização.
Sub ShowForm()
UserForm1.Show 0 'É permitida edição na planilha
End Sub
Configuração | Valor | Descrição |
---|---|---|
vbModal | 1 | UserForm é uma janela restrita. Opção padrão. |
vbModeless | 0 | UserForm não é uma janela restrita |
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