VBA Listbox - Item Selecionado

Este artigo demonstrará como trabalhar com o item selecionado em uma caixa de listagem no Excel VBA.

As caixas de listagem são amplamente usadas em formulários VBA, mas também podem ser usadas em sua planilha do Excel. Eles mostram uma lista de opções para os usuários, uma ou mais das quais o usuário pode selecionar.

Criando uma caixa de listagem em um formulário VBA

Para criar uma caixa de listagem em um formulário VBA, primeiro precisamos criar o UserForm.

Depois de criar seu formulário, selecione o controle List Box na caixa de ferramentas e arraste para criar uma caixa de listagem em seu formulário.

Adicionando valores à caixa de listagem

No evento Initialize do formulário, digite o código a seguir. A caixa de listagem coletará os valores armazenados em um intervalo de células em sua planilha do Excel.

123456 Sub UserForm_Initialize privado ()Dim rng como alcancePara cada rng no intervalo ("A1: A50")Me.lstState.AddItem rng.ValuePróximo rngEnd Sub

Ao executar o formulário, a caixa de listagem será mostrada conforme demonstrado na imagem abaixo:

Seleção de valores na caixa de listagem

Por padrão, um único valor pode ser selecionado em uma caixa de listagem em um formulário de usuário. No entanto, isso pode ser corrigido alterando a propriedade Multi-Select da caixa de listagem.

Clique na caixa de lista para selecioná-la e, em seguida, na janela Propriedades, altere a propriedade Multi-Select de 0-frmMultiSelectSingle para 1-frmMultiSelectMulti.

Agora, quando executamos o formulário, podemos selecionar mais de uma opção na caixa de listagem.

Se mudarmos a opção de ser 2-frmMultiSelectExtended, significa que podemos selecionar um dos valores e, em seguida, mantendo pressionada a tecla SHIFT, selecione outro valor mais abaixo na lista e todos os itens entre os 2 valores selecionados também serão selecionados.

Programação VBA | O Code Generator funciona para você!

Trabalhando com os valores selecionados no VBA

Dependendo do tipo de opção que usamos para a propriedade Multi-Select na caixa de listagem, existem várias maneiras de usarmos o valor ou os valores selecionados na caixa de listagem no código VBA.

Atribuindo o valor a uma variável

Podemos usar o After_Update evento da caixa de listagem para atribuir o valor selecionado a uma variável.

Em primeiro lugar, vamos criar uma variável de nível de módulo na parte superior do módulo de formulário.

Por baixo das palavras, Opção Explícita, crie a seguinte variável de string.

1 Dim strState as String.

Depois de criar essa variável, podemos clicar duas vezes na caixa de listagem para ir para o código por trás do formulário, ou podemos clicar no botão de código no Editor VBE.

O evento de clique da caixa de listagem será criado automaticamente. Selecione os After_Update Evento da lista de Procedimentos disponíveis.

No evento After_Update, digite o seguinte código:

123 Sub lstState_AfterUpdate privado ()strState = Me.lstStateEnd Sub

NOTA: Você pode excluir o evento Click, pois não é necessário.

Agora, se executarmos o formulário e clicarmos na caixa de listagem, o valor selecionado será armazenado na variável. Para testar isso, podemos colocar um ponto BREAK no código.

Agora, quando executarmos o formulário, se clicarmos na caixa de listagem, o código entrará no modo DEBUG e parará em nosso ponto de interrupção. Se, em seguida, pressionarmos F8 no teclado para avançar uma etapa no código, a variável será preenchida com o item selecionado na lista.

Podemos ver esse valor, colocando o mouse sobre a variável.

OU

Podemos ver o valor na janela imediata.

Cansado de procurar exemplos de código VBA? Experimente o AutoMacro!

Usando um botão de comando para retornar o valor ao Excel

Primeiramente, criamos um botão de comando no formulário para que um botão OK retorne o valor ou valores selecionados na caixa de listagem para o Excel.

Selecione o controle Botão de comando e, em seguida, clique e arraste no formulário para criar o botão.

Na janela Propriedades, altere o nome do botão para cmdOKe altere a legenda e o acelerador do botão.

O objetivo do acelerador é que o usuário use o teclado para ativar o botão, neste caso Alt + O ativaria o botão.

Para que o botão de comando funcione, precisamos adicionar o código por trás dele para que, quando o botão for clicado, o código seja executado. Isso é chamado de evento Click do botão.

Para acessar o evento de clique, clique duas vezes no botão na visualização de design do formulário. O evento de clique será criado automaticamente, pois é o evento mais comumente usado para botões de comando.

Digite o seguinte código no evento click do botão de comando.

123 Sub privado cmdOK_Click ()Intervalo ("E1") = strStateEnd Sub

O código pegará a variável que declaramos no evento After_Update do ListBox e retornará o valor ao Range no Excel.

Como alternativa, podemos obter o valor diretamente da caixa de listagem sem usar uma variável.

123 Sub privado cmdOK_Click ()Intervalo ("E1") = me.lstStateEnd Sub

Ao executar o formulário, o valor selecionado será devolvido ao Excel quando clicarmos no botão OK.

Seleção de vários valores

Se tivermos definido a propriedade de seleção múltipla da caixa de listagem como 1 ou 2, o que nos permite selecionar vários valores na lista, então o código para selecionar esses valores é um pouco diferente.

o After_Update O evento não é mais disparado ao selecionar os valores na caixa de listagem - portanto, não podemos usar este evento.

Ainda podemos usar o evento de clique do botão de comando, mas precisamos percorrer os valores selecionados na caixa de listagem para retorná-los ao Excel.

No evento Click do botão de comando, digite o código a seguir.

12345678910 Sub privado cmdOK_Click ()Dim x As IntegerIntervalo ("E1"). SelecionePara x = 0 To Me.lstState.ListCount - 1Se Me.lstState.Selected (x) = True ThenActiveCell = Me.lstState.List (x)ActiveCell.Offset (1, 0) .SelecionarFim sePróximo xEnd Sub

Agora, quando executarmos o formulário, apenas os valores selecionados serão retornados à planilha do Excel.

wave wave wave wave wave