/ / Várias seleções de caixas de listagem no Excel VBA

Várias seleções de caixas de listagem no Excel VBA

o Propriedade MultiSelect em Excel VBA permite que um usuário selecione vários itens em uma caixa de listagem. A forma de usuário que vamos criar é a seguinte:

Várias seleções de caixas de listagem 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 listagem (primeiro à esquerda, o segundo à direita), botões de comando, caixas de seleção (primeiro à esquerda, o segundo à direita), quadro e botões de opção (primeiro no topo, o segundo abaixo do primeiro , e assim por diante). 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 listagem clicando em ListBox na caixa de ferramentas. Em seguida, você pode arrastar uma caixa de listagem no Userform. Quando você chegar ao quadro "Selecionar tipo", lembre-se de desenhar este quadro antes de colocar os três botões de opção nele.

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 da forma de usuário, botões de comando, caixas de seleção, quadro e botões de opção, 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. Primeiro, declare a variável i do tipo Integer. Declare a variável na seção General Declarations (na parte superior do código). Dessa forma, você só precisa declarar a variável uma vez e usá-los em vários subs.

Dim i As Integer

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

10. Adicione as seguintes linhas de código:

Private Sub UserForm_Initialize()

With ListBox1
    .AddItem "Sales"
    .AddItem "Production"
    .AddItem "Logistics"
    .AddItem "Human Resources"
End With

OptionButton3.Value = True

End Sub

Explicação: a primeira caixa de listagem será preenchida e o terceiro botão de opção será definido como padrão.

Agora criamos a primeira parte do formulário de usuário. Embora pareça arrumado, nada acontecerá quando clicarmos nos botões de comando ou nos outros controles.

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

12. Clique duas vezes no botão Adicionar.

13. Adicione as seguintes linhas de código:

Private Sub CommandButton1_Click()

For i = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(i) = True Then ListBox2.AddItem ListBox1.List(i)
Next i

End Sub

Explicação: O VBA do Excel percorre a primeira caixa de listagem (lista o número do índice de zero (0) para o primeiro item da lista) e, se selecionado, adiciona o item à segunda caixa de listagem.

14. Clique duas vezes no botão Remover.

15. Adicione as seguintes linhas de código:

Private Sub CommandButton2_Click()

Dim counter As Integer
counter = 0

For i = 0 To ListBox2.ListCount - 1
    If ListBox2.Selected(i - counter) Then
        ListBox2.RemoveItem (i - counter)
        counter = counter + 1
    End If
Next i

CheckBox2.Value = False

End Sub

Explicação: O VBA do Excel percorre a segunda caixa de listagem e, se selecionado, remove o item. A variável do contador controla o número de itens removidos.

16. Clique duas vezes no primeiro botão de opção.

17. Adicione as seguintes linhas de código:

Private Sub OptionButton1_Click()

ListBox1.MultiSelect = 0
ListBox2.MultiSelect = 0

End Sub

18. Clique duas vezes no segundo botão de opção.

19. Adicione as seguintes linhas de código:

Private Sub OptionButton2_Click()

ListBox1.MultiSelect = 1
ListBox2.MultiSelect = 1

End Sub

20. Clique duas vezes no terceiro botão de opção.

21. Adicione as seguintes linhas de código:

Private Sub OptionButton3_Click()

ListBox1.MultiSelect = 2
ListBox2.MultiSelect = 2

End Sub

Explicação: a configuração "Selecionar tipo" pode ser escolhida clicando nos botões de opção. A imagem da forma de usuário mostrada anteriormente fornece uma descrição de cada configuração. Em vez de configurar essa configuração em tempo de execução, você também pode definir essa configuração em tempo de design. Para isso, clique com o botão direito do mouse em um controle de caixa de listagem e clique em Propriedades. Defina a propriedade MultiSelect como 0 - fmMultiSelectSingle, 1 - fmMultiSelectMulti ou 2 - fmMultiSelectExtented.

22. Clique duas vezes na primeira caixa de seleção.

23. Adicione as seguintes linhas de código:

Private Sub CheckBox1_Click()

If CheckBox1.Value = True Then
    For i = 0 To ListBox1.ListCount - 1
        ListBox1.Selected(i) = True
    Next i
End If

If CheckBox1.Value = False Then
    For i = 0 To ListBox1.ListCount - 1
        ListBox1.Selected(i) = False
    Next i
End If

End Sub

Explicação: marcando a primeira caixa de seleção, todos os itens da primeira caixa de listagem podem ser selecionados / desmarcados.

24. Clique duas vezes na segunda caixa de seleção para adicionar as mesmas linhas de código. Apenas substitua CheckBox1 por CheckBox2 e ListBox1 por ListBox2.

Leia também: