Ir para o conteúdo principal
Note: The other languages of the website are Google-translated. Back to English

Aviso

JUser:: _load: Não foi possível carregar usuário com ID: 8858

Como criar uma lista suspensa com várias caixas de seleção no Excel?

Muitos usuários do Excel tendem a criar uma lista suspensa com várias caixas de seleção para selecionar vários itens da lista por vez. Na verdade, você não pode criar uma lista com várias caixas de seleção com a validação de dados. Neste tutorial, vamos mostrar a você dois métodos para criar uma lista suspensa com várias caixas de seleção no Excel.

Use a caixa de listagem para criar uma lista suspensa com várias caixas de seleção
R: Crie uma caixa de listagem com dados de origem
B: Nomeie a célula na qual você localizará os itens selecionados
C: Insira uma forma para ajudar na saída dos itens selecionados
Crie facilmente uma lista suspensa com caixas de seleção com uma ferramenta incrível
Mais tutoriais para a lista suspensa ...


Use a caixa de listagem para criar uma lista suspensa com várias caixas de seleção

Conforme a captura de tela mostrada abaixo, na planilha atual, todos os nomes no intervalo A2: A11 serão os dados de origem da caixa de listagem. Clicar no botão na célula C4 pode gerar os itens selecionados, e todos os itens selecionados na caixa de listagem serão exibidos na célula E4. Para conseguir isso, faça o seguinte.

A. Crie uma caixa de listagem com dados de origem

1. Clique Desenvolvedor > inserção > Caixa de listagem (controle Active X). Veja a imagem:

2. Desenhe uma caixa de lista na planilha atual, clique com o botão direito nela e selecione Propriedades no menu do botão direito.

3. No Propriedades caixa de diálogo, você precisa configurar da seguinte maneira.

  • 3.1 no ListFillRange caixa, insira o intervalo de origem que você exibirá na lista (aqui eu insiro o intervalo A2: A11);
  • 3.2 no Estilo de lista caixa, selecione 1 - fmList StyleOption;
  • 3.3 no MultiSelect caixa, selecione 1 - fmMultiSelectMulti;
  • 3.4 Feche o Propriedades caixa de diálogo. Veja a imagem:

B: Nomeie a célula na qual você localizará os itens selecionados

Se você precisar imprimir todos os itens selecionados em uma célula especificada, como E4, faça o seguinte.

1. Selecione a célula E4, digite ListBoxOutput no nome Box e pressione o botão Entrar chave.

C. Insira uma forma para ajudar na saída dos itens selecionados

1. Clique inserção > Formas > Retângulo. Veja a imagem:

2. Desenhe um retângulo em sua planilha (aqui eu desenho o retângulo na célula C4). Em seguida, clique com o botão direito no retângulo e selecione Atribuir Macro no menu do botão direito.

3. No Atribuir Macro caixa de diálogo, clique no botão Novo botão.

4. Na abertura Microsoft Visual Basic para Aplicações janela, substitua o código original no Módulo janela com o código VBA abaixo.

Código VBA: crie uma lista com várias caixas de seleção

Sub Rectangle1_Click()
'Updated by Extendoffice 20200730
Dim xSelShp As Shape, xSelLst As Variant, I, J As Integer
Dim xV As String
Set xSelShp = ActiveSheet.Shapes(Application.Caller)
Set xLstBox = ActiveSheet.ListBox1
If xLstBox.Visible = False Then
    xLstBox.Visible = True
    xSelShp.TextFrame2.TextRange.Characters.Text = "Pickup Options"
    xStr = ""
    xStr = Range("ListBoxOutput").Value
    
    If xStr <> "" Then
         xArr = Split(xStr, ";")
    For I = xLstBox.ListCount - 1 To 0 Step -1
        xV = xLstBox.List(I)
        For J = 0 To UBound(xArr)
            If xArr(J) = xV Then
              xLstBox.Selected(I) = True
              Exit For
            End If
        Next
    Next I
    End If
Else
    xLstBox.Visible = False
    xSelShp.TextFrame2.TextRange.Characters.Text = "Select Options"
    For I = xLstBox.ListCount - 1 To 0 Step -1
        If xLstBox.Selected(I) = True Then
        xSelLst = xLstBox.List(I) & ";" & xSelLst
        End If
    Next I
    If xSelLst <> "" Then
        Range("ListBoxOutput") = Mid(xSelLst, 1, Len(xSelLst) - 1)
    Else
        Range("ListBoxOutput") = ""
    End If
End If
End Sub

Nota: No código, Retângulo 1 é o nome da forma; ListBox1 é o nome da caixa de listagem; Selecione as opções e Opções de coleta são os textos exibidos da forma; e a ListBoxOutput é o nome do intervalo da célula de saída. Você pode alterá-los de acordo com suas necessidades.

5. Pressione outro + Q simultaneamente para fechar o Microsoft Visual Basic para Aplicações janela.

6. Clique no botão retângulo para dobrar ou expandir a caixa de listagem. Quando a caixa de listagem estiver se expandindo, verifique os itens na caixa de listagem e clique no retângulo novamente para enviar todos os itens selecionados para a célula E4. Veja a demonstração abaixo:

7. Em seguida, salve a pasta de trabalho como um Pasta de trabalho Excel MacroEnable para reutilizar o código no futuro.


Crie uma lista suspensa com caixas de seleção com uma ferramenta incrível

O método acima é muito multifacetado para ser manuseado facilmente. Aqui recomendo fortemente o Lista suspensa com caixas de seleção utilidade de Kutools para sobressair para ajudá-lo a criar facilmente uma lista suspensa com caixas de seleção em um intervalo especificado, planilha atual, pasta de trabalho atual ou todas as pastas de trabalho abertas com base em suas necessidades. Veja a demonstração abaixo:
Baixe e experimente agora! (30- dia de trilha livre)

Além da demonstração acima, também fornecemos um guia passo a passo para demonstrar como aplicar esse recurso para realizar essa tarefa. Faça o seguinte.

1. Abra a planilha que você definiu na lista suspensa de validação de dados e clique em Kutools > Lista suspensa > Lista suspensa com caixas de seleção > Configurações. Veja a imagem:

2. No Lista suspensa com configurações de caixas de seleção caixa de diálogo, configure como segue.

  • 2.1) No Aplicar a seção, especifique o escopo de aplicação onde você criará caixas de seleção para itens na lista suspensa. Você pode especificar um certa gama, planilha atual, pasta de trabalho atual or todas as pastas de trabalho abertas com base em suas necessidades.
  • 2.2) No Moda seção, escolha um estilo que você deseja para a saída dos itens selecionados;
  • Aqui leva o modificar como um exemplo, se você escolher esta, o valor da célula será alterado com base nos itens selecionados.
  • 2.3) No separador caixa, insira um delimitador que você usará para separar os vários itens;
  • 2.4) No Direção do texto seção, selecione uma direção de texto com base em suas necessidades;
  • 2.5) Clique no OK botão.

3. A última etapa, clique em Kutools > Lista suspensa > Lista suspensa com caixas de seleção > Habilitar lista suspensa de caixas de seleção para ativar esse recurso.

De agora em diante, quando você clicar nas células com lista suspensa em um escopo especificado, uma caixa de lista aparecerá, selecione os itens marcando as caixas de seleção para produzir na célula como mostrado na demonstração abaixo (tome o modo Modificar como exemplo )

Para obter mais detalhes sobre esse recurso, por favor visite aqui.

  Se você quiser ter uma avaliação gratuita (30-dia) deste utilitário, por favor clique para fazer o downloade, em seguida, aplique a operação de acordo com as etapas acima.


Artigos relacionados:

Preenchimento automático ao digitar na lista suspensa do Excel
Se você tiver uma lista suspensa de validação de dados com valores grandes, precisará rolar para baixo na lista apenas para encontrar o apropriado ou digitar a palavra inteira diretamente na caixa de listagem. Se houver um método para permitir o preenchimento automático ao digitar a primeira letra da lista suspensa, tudo ficará mais fácil. Este tutorial fornece o método para resolver o problema.

Crie uma lista suspensa de outra pasta de trabalho no Excel
É muito fácil criar uma lista suspensa de validação de dados entre as planilhas de uma pasta de trabalho. Mas se os dados da lista de que você precisa para a validação de dados estiverem em outra pasta de trabalho, o que você faria? Neste tutorial, você aprenderá como criar uma lista suspensa de outra pasta de trabalho no Excel em detalhes.

Crie uma lista suspensa pesquisável no Excel
Para uma lista suspensa com vários valores, encontrar um adequado não é um trabalho fácil. Anteriormente, introduzimos um método de preenchimento automático da lista suspensa ao inserir a primeira letra na caixa suspensa. Além da função de preenchimento automático, você também pode tornar a lista suspensa pesquisável para aumentar a eficiência de trabalho ao encontrar os valores adequados na lista suspensa. Para tornar a lista suspensa pesquisável, tente o método neste tutorial.

Preencher automaticamente outras células ao selecionar valores na lista suspensa do Excel
Digamos que você tenha criado uma lista suspensa com base nos valores do intervalo de células B8: B14. Ao selecionar qualquer valor na lista suspensa, você deseja que os valores correspondentes no intervalo de células C8: C14 sejam preenchidos automaticamente em uma célula selecionada. Para resolver o problema, os métodos neste tutorial vão lhe fazer um favor.

Mais tutoriais para a lista suspensa ...


As melhores ferramentas de produtividade para escritório

Kutools for Excel Resolve a maioria dos seus problemas e aumenta sua produtividade em 80%

  • armadilha para peixes: Insira rapidamente fórmulas complexas, gráficos e qualquer coisa que você tenha usado antes; Criptografar células com senha; Criar lista de discussão e enviar emails ...
  • Barra Super Fórmula (edite facilmente várias linhas de texto e fórmula); Layout de leitura (ler e editar facilmente um grande número de células); Colar na faixa filtrada...
  • Mesclar células / linhas / colunas sem perder dados; Dividir o conteúdo das células; Combinar linhas / colunas duplicadas... Evite células duplicadas; Comparar intervalos...
  • Selecione Duplicado ou Único Linhas; Selecione linhas em branco (todas as células estão vazias); Super Find e Fuzzy Find em muitos livros; Seleção aleatória ...
  • Cópia exata Várias células sem alterar a referência da fórmula; Criação automática de referências para várias folhas; Inserir marcadores, Caixas de seleção e mais ...
  • Extrair Texto, Adicionar texto, remover por posição, Remover Espaço; Criar e imprimir subtotais de paginação; Converter entre conteúdo de células e comentários...
  • Super Filtro (salvar e aplicar esquemas de filtro a outras planilhas); Classificação Avançada por mês / semana / dia, frequência e mais; Filtro Especial por negrito, itálico ...
  • Combine pastas de trabalho e planilhas; Mesclar tabelas com base em colunas-chave; Divida os dados em várias folhas; Conversão em lote de xls, xlsx e PDF...
  • Mais de 300 recursos poderosos. Suporta Office / Excel 2007-2021 e 365. Suporta todos os idiomas. Fácil implantação em sua empresa ou organização. Recursos completos de avaliação gratuita de 30 dias. Garantia de devolução do dinheiro em 60 dias.
guia kte 201905

Office Tab Traz a interface com guias para o Office e torna seu trabalho muito mais fácil

  • Habilite a edição e leitura com guias em Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Abra e crie vários documentos em novas guias da mesma janela, em vez de em novas janelas.
  • Aumenta sua produtividade em 50% e reduz centenas de cliques do mouse para você todos os dias!
parte inferior da aba do escritório
Comentários (70)
Ainda não há classificações. Seja o primeiro a avaliar!
Este comentário foi feito pelo moderador no site
Isto é fantástico. Mas será melhor se a seleção múltipla puder ser colocada onde o cursor estiver ativo. Não necessariamente o que o código especifica.
Este comentário foi feito pelo moderador no site
Isso é exatamente o que eu estava procurando, o código pode ser modificado para permitir que os dados selecionados sejam exibidos em células separadas na coluna? então, em vez de: segunda, terça, quarta, exibir como. segunda-feira terça-feira quarta-feira
Este comentário foi feito pelo moderador no site
Isso é exatamente o que eu estava procurando, existe uma modificação no código que colocará a próxima seleção da caixa de listagem na próxima linha. por exemplo um dois três Em vez de: um, dois, três
Este comentário foi feito pelo moderador no site
você pode explicar como você adicionou ListBoxOutput na célula E4
Este comentário foi feito pelo moderador no site
Olá Como pode copiar esta caixa de listagem para várias células. Apenas copiar e colar não está funcionando. Você poderia explicar por exemplo em cada célula (E5,E6,E7,E8,...) como posso colocar essa caixa de seleção?
Este comentário foi feito pelo moderador no site
você poderia explicar como posso copiar facilmente esta caixa de listagem para 100 linhas? (caixas de listagem separadas para cada uma das 100 linhas)
Este comentário foi feito pelo moderador no site
Uma vez que a saída é feita e pressione o botão novamente, os itens selecionados anteriormente na caixa de listagem não podem ser alterados. Como resolver?
Este comentário foi feito pelo moderador no site
Obrigada! É ótimo e funciona!
Este comentário foi feito pelo moderador no site
Eu sou um novato nisso, mas alguém pode me dizer como criar um ListBox de seleção múltipla que será aberto, por exemplo, quando eu selecionar um nome. Eu quero que a caixa de listagem caiba em um único.
EXEMPLO: Tenho uma lista de nomes com informações de contato, etc. Quero criar uma caixa de listagem duplicada para cada nome da minha lista. Gostaria de abrir automaticamente quando eu selecionar um nome e recolher de volta na célula quando eu for para outra linha de informações. Por favor informar. Desde já, obrigado.
Este comentário foi feito pelo moderador no site
Caro Randy,
Desculpe não pode resolver este problema.
Este comentário foi feito pelo moderador no site
Funciona perfeitamente conforme as instruções, porém se eu proteger a folha dá e erro. Alguma solução para isso?
Este comentário foi feito pelo moderador no site
Funciona perfeitamente conforme as instruções. Mas, como posso usar isso em uma planilha protegida. Atualmente, se eu usar isso depois de proteger a planilha, ele me dá um erro "Erro em tempo de execução '-2147024809 (80070057)': O valor especificado está fora do intervalo"
Este comentário foi feito pelo moderador no site
Caro Amit Sood,
Antes de proteger a planilha, formate a célula de saída como desbloqueada e aplique o código VBA abaixo. Obrigado pelo seu comentário.

Sub Retângulo2_Click()
Dim xSelShp como forma, xSelLst como variante, I como inteiro
On Error Resume Next
Definir xSelShp = ActiveSheet.Shapes(Application.Caller)
Definir xLstBox = ActiveSheet.ListBox1
Se xLstBox.Visible = False Então
xLstBox.Visible = Verdadeiro
xSelShp.TextFrame2.TextRange.Characters.Text = "Opções de Captura"
Outro
xLstBox.Visible = Falso
xSelShp.TextFrame2.TextRange.Characters.Text = "Selecionar opções"
Para I = xLstBox.ListCount - 1 a 0 Etapa -1
Se xLstBox.Selected(I) = True Então
xSelLst = xLstBox.List(I) & ";" & xSelLst
Se acabar
Proximo eu
If xSelLst <> "" Então
Range("ListBoxOutput") = Mid(xSelLst, 1, Len(xSelLst) - 1)
Outro
Range("ListBoxOutput") = ""
Se acabar
Se acabar
End Sub
Este comentário foi feito pelo moderador no site
"Eu criei um arquivo usando a caixa de listagem ActiveX como você é explicado, lá eu inseri alguns dados e adicionei algumas propriedades também. Eu verifiquei alguns dados usando a caixa de seleção na lista e salvei e saí do arquivo. Mas enquanto reabrindo o arquivo, ele não está mostrando nenhum dado verificado... alguém pode me dar uma sugestão para salvar essas atualizações."
Alguém pode me ajudar por favor.
Este comentário foi feito pelo moderador no site
Bom dia,
Por favor, coloque o código VBA abaixo na janela de código ThisWorkbook.
No código, Sheet6 é o nome padrão da planilha que contém a caixa de listagem que você deseja manter as seleções conforme a captura de tela abaixo. E ListBox1 é o nome da caixa de listagem. Por favor, altere-os conforme necessário.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Chamar SalvarSeleções
End Sub

Private Sub Workbook_Open ()
Chamar RestoreSelections
End Sub

Private Sub SaveSelections()

Dim arr() Como Variante, i Tão Longo, j Tão Longo

Com Sheet6.OLEObjects("ListBox1").Object
Se .ListIndex > 0 Então
Para i = 0 Para .ListCount - 1
Se .Selecionado(i) Então
j = j + 1
ReDim Preserve arr(1 para j)
arr(j) = eu
Se acabar
Próximo
Names.Add Name:="Selections", RefersTo:=arr, Visible:=False
Se acabar
Terminar com

End Sub

Private Sub RestoreSelections()

Dim arr como variante, i como inteiro

arr = [Seleções]

Com Sheet6.OLEObjects("ListBox1").Object
Para i = 1 Para UBound(arr)
.Selecionado(arr(i)) = Verdadeiro
Próximo
Terminar com

End Sub
Este comentário foi feito pelo moderador no site
Obrigado pela resposta senhor, mas não está funcionando no caso do meu arquivo, você pode enviar seu ID de e-mail, para que eu possa enviar meu arquivo para você.
Obrigado antecipadamente
Este comentário foi feito pelo moderador no site
Caro manjusha isac,
Por favor, envie seu arquivo para zxm@addin99.com. Espero que eu possa ajudar.
Este comentário foi feito pelo moderador no site
Além disso, você precisa salvar a pasta de trabalho como uma pasta de trabalho habilitada para macro do Excel e ativar o código sempre que alterar as seleções da caixa de listagem.
Este comentário foi feito pelo moderador no site
eu quero atualizar automaticamente os nomes em diferentes colunas. é possível, se possível, por favor, compartilhe-me o código.
Este comentário foi feito pelo moderador no site
INCRÍVEL está funcionando, mas depois de fechar o excel e abri-lo novamente, a seleção da caixa de seleção desapareceu, então, se eu clicar no botão, toda a lista desaparecerá, qualquer solução para isso
por favor alguem me ajuda
Muito obrigado em avançado
Este comentário foi feito pelo moderador no site
Caro Anjo,
Publicamos um artigo "Como salvar ou reter seleções de caixas de listagem ActiveX no Excel?" que introduz o método de salvar as seleções das caixas de listagem após fechar e reabrir a pasta de trabalho.
Você pode seguir este link para obter mais informações: https://www.extendoffice.com/documents/excel/5051-excel-listbox-save-selection.html
Este comentário foi feito pelo moderador no site
incrível está funcionando, mas eu tenho um problema depois de salvar o arquivo e abri-lo novamente, todas as verificações da lista de caixas de seleção desapareceram
pode me ajudar nessa muito obrigado
Este comentário foi feito pelo moderador no site
além disso, muda o tamanho da list box e forma sempre depois de salvar e abrir novamente o arquivo se alguém tiver uma solução para esse problema por favor me ajude

muito obrigado
Este comentário foi feito pelo moderador no site
Querida marca,
Publicamos um artigo "Como salvar ou reter seleções de caixas de listagem ActiveX no Excel?" que introduz o método de salvar as seleções das caixas de listagem após fechar e reabrir a pasta de trabalho.
Você pode seguir este link para obter mais informações: https://www.extendoffice.com/documents/excel/5051-excel-listbox-save-selection.html
Este comentário foi feito pelo moderador no site
Olá,

Eu estou querendo saber se existe uma maneira de direcionar as opções de coleta para mais de uma célula (não apenas E4), ou fazer as seleções uma lista de verificação suspensa para que eu possa selecionar várias opções de uma lista de verificação, mas fazê-lo repetidamente e independentemente do outras seleções que fiz. Por exemplo, como eu usaria a mesma lista de opções de coleta para inserir uma seleção diferente de itens para E5, E6, E7, etc. da mesma lista de coleta.

Obrigado
Este comentário foi feito pelo moderador no site
Olá LizKats,
Por favor, tente o código abaixo. Espero que eu possa ajudar. Obrigada.

Sub Retângulo2_Click()

'Atualizado por Extendoffice 20200529

Dim xSelShp como forma, xSelLst como variante, i como inteiro

Definir xSelShp = ActiveSheet.Shapes(Application.Caller)

Definir xLstBox = ActiveSheet.ListBox1

Dim xRg como intervalo

Dim xCount, xFNum, xR, xC como inteiro

Dim xStr As String

Se xLstBox.Visible = False Então

xLstBox.Visible = Verdadeiro

xSelShp.TextFrame2.TextRange.Characters.Text = "Opções de Captura"

Outro

xLstBox.Visible = Falso

xSelShp.TextFrame2.TextRange.Characters.Text = "Selecionar opções"

Set xRg = Range("ListBoxOutput")

xCount = xLstBox.ListCount - 1

xStr = ""

Para i = xLstBox.ListCount - 1 a 0 Etapa -1

Se xLstBox.Selected(i) = True Então

xStr = xLstBox.List(i) & ";" & xStr

Se acabar

Proximo eu



Se xRg.Value = "" Então

xRg.Value = xStr

Outro

Definir xRg = xRg. Offset(1, 0)

Faça While xRg.Value <> ""

Definir xRg = xRg. Offset(1, 0)

laço

xRg.Value = xStr

Se acabar

Se acabar

End Sub
Este comentário foi feito pelo moderador no site
Olá,

Muito obrigado por este artigo maravilhoso! Este era o código modificado que eu estava procurando nos comentários! No entanto, vejo que a string xStr combinada está adicionando um ponto e vírgula ";" até o fim de alguma forma. Não consigo depurar como não incluir o ponto e vírgula no final da string.

Além disso, existe uma maneira de especificar intervalos de células específicos para xRg? Estou me referindo a Set xRg = Range("ListBoxOutput") e querendo alterar ListBoxOutput para algo como H5:H10 & H15:20. Isso seria possível de alguma forma?
Este comentário foi feito pelo moderador no site
Está funcionando bem, muito obrigado pela ajuda. Eu tenho um problema aqui é que, toda a saída está vindo na mesma célula E4, como podemos obter a saída em células diferentes, por exemplo: saída para C4 em E4, C5 em E5, C6 em E6 etc.
Este comentário foi feito pelo moderador no site
Bom dia,
O problema que você mencionou ainda não pode ser resolvido.
Este comentário foi feito pelo moderador no site
Добрый день! Прошу помочь.
Как сделать так чтобы каждое значение выходило на новой клетке? чтобы по выходило по вертикали?
Este comentário foi feito pelo moderador no site
AJUDA!!! como saída em diferentes faixas (verticalmente)?
Este comentário foi feito pelo moderador no site
Sub Retângulo2_Click()
'Atualizado por Extendoffice 20190924
Dim xSelShp como forma, xSelLst como variante, I como inteiro
Dim xRg como intervalo
Definir xSelShp = ActiveSheet.Shapes(Application.Caller)
Definir xLstBox = ActiveSheet.ListBox1
Se xLstBox.Visible = False Então
xLstBox.Visible = Verdadeiro
xSelShp.TextFrame2.TextRange.Characters.Text = "Opções de Captura"
Outro
xLstBox.Visible = Falso
xSelShp.TextFrame2.TextRange.Characters.Text = "Selecionar opções"
Set xRg = Range("ListBoxOutput")
Para I = 0 Para xLstBox.ListCount - 1
Se xLstBox.Selected(I) = True Então
xSelLst = xLstBox.List(I)
xRg.Value = Mid(xSelLst, 1, Len(xSelst))
Definir xRg = xRg. Offset(1, 0)
Se acabar
Proximo eu
Se acabar
End Sub
Este comentário foi feito pelo moderador no site
Como pode replicar este ejercicio nos filas inferiores?
Como posso replicar este exercício nas linhas abaixo?
Não há comentários postados aqui ainda
carregar mais