/ Caixas de combinação dependentes do Excel VBA

Caixas de combinação dependentes do Excel VBA

Abaixo, vamos olhar para um programa em Excel VBA que cria uma forma de usuário que contém caixas de combinação dependentes. A forma de usuário que vamos criar é a seguinte:

O usuário seleciona Animais em uma lista suspensa. Como resultado, o usuário pode selecionar um animal em uma segunda lista suspensa.

Caixas de combinação dependentes no Excel VBA

O usuário seleciona Esportes em uma lista suspensa. Como resultado, o usuário pode selecionar um esporte em uma segunda lista suspensa.

Caixas de combinação dependentes no Excel VBA

Para criar este formulário de usuário, execute as etapas a seguir.

1. Abra o Editor do Visual Basic. Se o Explorador de Projetos não estiver visível, clique em Visualizar, Explorador de Projetos.

2. Clique em Inserir, Userform. Se a caixa de ferramentas não aparecer automaticamente, clique em Exibir, Caixa de ferramentas. Sua tela deve ser configurada como abaixo.

Configuração da Tela Userform no Excel VBA

3 Adicione as caixas de combinação (primeiro à esquerda, o segundo à direita) e o botão de comando. Depois que isso for concluído, o resultado deve ser consistente com a imagem da forma de usuário mostrada anteriormente. Por exemplo, crie um controle de caixa de combinação clicando em ComboBox na caixa de ferramentas. Em seguida, você pode arrastar uma caixa de combinação no Userform.

4 Você pode alterar os nomes e as legendas dos controles. Os nomes são usados ​​no código do Excel VBA. Legendas são aquelas que aparecem na tela. É uma boa prática alterar os nomes dos controles, mas isso não é necessário aqui porque temos apenas alguns controles neste exemplo. Para alterar a legenda do formulário de usuário e do botão de comando, clique em Exibir, janela Propriedades e clique em cada controle.

5. Para mostrar a forma de usuário, coloque um botão de comando em sua planilha e adicione a seguinte linha de código:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Agora vamos criar o Sub UserForm_Initialize. Quando você usa o método Show para o Userform, este sub será automaticamente executado.

6. Abra o Editor do Visual Basic.

7. No Project Explorer, clique com o botão direito do mouse em UserForm1 e clique em View Code.

8. Escolha Userform na lista suspensa à esquerda. Escolha Inicializar na lista suspensa à direita.

9. Adicione as seguintes linhas de código:

Private Sub UserForm_Initialize()

With ComboBox1
    .AddItem "Animals"
    .AddItem "Sports"
    .AddItem "Food"
End With

End Sub

Explicação: Essas linhas de código preenchem a primeira caixa de combinação.

Agora criamos a primeira parte do formulário de usuário. Embora pareça arrumado, nada acontecerá quando selecionarmos um item da primeira caixa de combinação.

10. No Project Explorer, clique duas vezes em UserForm1.

11. Clique duas vezes na primeira caixa de combinação.

12. Adicione as seguintes linhas de código:

Private Sub ComboBox1_Change()

Dim index As Integer
index = ComboBox1.ListIndex

ComboBox2.Clear

Select Case index
    Case Is = 0
        With ComboBox2
            .AddItem "Dog"
            .AddItem "Cat"
            .AddItem "Horse"
        End With
    Case Is = 1
        With ComboBox2
            .AddItem "Tennis"
            .AddItem "Swimming"
            .AddItem "Basketball"
        End With
    Case Is = 2
        With ComboBox2
            .AddItem "Pancakes"
            .AddItem "Pizza"
            .AddItem "Chinese"
        End With
End Select

End Sub

Explicação: O VBA do Excel usa o valor do índice da variável para testar cada instrução Case subsequente para ver com quais itens a segunda caixa de combinação deve ser preenchida. Acesse nosso programa Select Case para saber mais sobre a estrutura Select Case.

13. Clique duas vezes no botão Importar.

14. Adicione a seguinte linha de código:

Private Sub CommandButton1_Click()

Range("A1").Value = ComboBox2.Value

End Sub

Resultado:

Caixas de combinação dependentes no Excel VBA

Leia também: