Evento UserForm


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:


Adicionando Evento

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 F5 ou ).

Para criar um evento de inicialização:

  1. Clique com botão direito no UserForm
  2. Selecione Exibir Código
  3. Na janela Dropdown da esquerda selecione UserForm
  4. Na janela Dropdown da direita selecione Initialize
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.


Configurando o Evento Inicialize

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

Exibir tópico avançado

Exibindo o UserForm

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:

Botão de Comando sem Config

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.).


vbModal ou vbModeless

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

Protected by Copyscape