Múltiplas seleções de caixa de listagem no Excel VBA - Macros fáceis do Excel

Índice

O Propriedade MultiSelect em Excel VBA permite que um usuário selecione vários itens em uma caixa de listagem. O formulário de usuário que vamos criar tem a seguinte aparência:

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

1. Abra o Editor do Visual Basic. Se o Project Explorer não estiver visível, clique em View, Project Explorer.

2. Clique em Inserir, Formulário do usuário. Se a caixa de ferramentas não aparecer automaticamente, clique em Exibir, Caixa de ferramentas. Sua tela deve ser configurada conforme abaixo.

3. Adicione as caixas de listagem (primeiro à esquerda, a segunda à direita), botões de comando, caixas de seleção (primeiro à esquerda, a segunda à direita), quadro e botões de opção (primeiro no topo, o segundo abaixo o primeiro e assim por diante). Depois de concluído, o resultado deve ser consistente com a imagem do formulário do 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 formulário do usuário. 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 VBA do Excel. As legendas são aquelas que aparecem na tela. É uma boa prática alterar os nomes dos controles, mas não é necessário aqui porque temos apenas alguns controles neste exemplo. Para alterar a legenda do formulário do usuário, botões de comando, caixas de seleção, quadro e botões de opção, clique em Exibir, Janela de propriedades e clique em cada controle.

5. Para mostrar o formulário 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 formulário do usuário, este sub será executado automaticamente.

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 Inteiro. Declare a variável na seção Declaração geral (na parte superior do código). Dessa forma, você só precisa declarar a variável uma vez e pode usá-la 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:

Sub UserForm_Initialize privado ()
Com ListBox1
.AddItem "Vendas"
.AddItem "Produção"
.AddItem "Logística"
.Adicionar "Recursos Humanos"
Terminar com
OptionButton3.Value = True
End Sub

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

Agora criamos a primeira parte do formulário de usuário. Embora já pareça legal, nada acontecerá ainda 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 ()
Para i = 0 Para ListBox1.ListCount - 1
If ListBox1.Selected (i) = True Then ListBox2.AddItem ListBox1.List (i)
Proximo eu
End Sub

Explicação: O VBA do Excel percorre a primeira caixa de listagem (número de índice de lista 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 como inteiro
contador = 0
Para i = 0 Para ListBox2.ListCount - 1
If ListBox2.Selected (i - counter) Then
ListBox2.RemoveItem (i - contador)
contador = contador + 1
Fim se
Proximo eu
CheckBox2.Value = False
End Sub

Explicação: O VBA do Excel percorre a segunda caixa de listagem e, se selecionada, remove o item. A variável de 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:

Sub OptionButton1_Click () privada
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 do formulário do usuário mostrada anteriormente fornece uma descrição de cada configuração. Em vez de definir essa configuração em tempo de execução, você também pode definir essa configuração em tempo de design. Para fazer isso, clique com o botão direito do mouse em um controle da caixa de listagem e, a seguir, 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:

Sub CheckBox1_Click privada ()
Se CheckBox1.Value = True Then
Para i = 0 Para ListBox1.ListCount - 1
ListBox1.Selected (i) = True
Proximo eu
Fim se
If CheckBox1.Value = False Then
Para i = 0 Para ListBox1.ListCount - 1
ListBox1.Selected (i) = False
Proximo eu
Fim se
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. Substitua apenas CheckBox1 por CheckBox2 e ListBox1 por ListBox2.

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave