KutoolsforOffice — Uma solução, cinco ferramentas poderosas.Fazer mais com menos esforço.

Selecionar vários itens no Excel Lista suspensa – guia completo

AutoraSiluvia Data de Modificação

As listas suspensas do Excel são uma ferramenta fantástica para garantir consistência dos dados e facilitar a introdução de informações. Contudo, por defeito, limitam-no a selecionar apenas um item. E se precisar de escolher vários itens na mesma lista suspensa? Este guia abrangente explora métodos para ativar seleções múltiplas nas listas suspensas do Excel, gerir duplicados, definir separadores personalizados e delimitar o âmbito destas listas.

Uma captura de ecrã da demonstração animada que mostra seleções múltiplas numa lista pendente do Excel.

Dica: Antes de aplicar os métodos seguintes, certifique-se de que já criou Lista suspensa nas suas folhas de cálculo. Se pretender saber como criar Lista suspensa de validação de dados, siga as instruções neste artigo:Como criar Lista suspensa de validação de dados no Excel.

Ativar seleções múltiplas em Lista suspensa

Esta secção apresenta dois métodos para o ajudar a ativar seleções múltiplas numa lista suspensa no Excel.

Utilizar código VBA

Para ativar seleções múltiplas numa lista suspensa, pode utilizar o Visual Basic for Applications (VBA) no Excel. Com um script VBA, é possível alterar o comportamento da lista suspensa, transformando-a numa lista de seleção múltipla. Siga os passos abaixo.

Passo 1: Abrir o editor da folha (Código)
  1. Abra a folha de cálculo que contém a lista suspensa para a qual pretende ativar a seleção múltipla.
  2. Clique com o botão direito do rato no separador da folha e escolha «Ver Código» no menu de contexto.
    Uma captura de ecrã da opção Ver Código no menu de contexto de um separador de folha no Excel
Passo 2: Utilizar código VBA

Copie agora o seguinte código VBA e cole-o na janela de código da folha que está aberta.

Código VBA: Ative seleções múltiplas nas listas suspensas do Excel.

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20240118
    Dim xRng As Range
    Dim xValue1 As String
    Dim xValue2 As String
    Dim delimiter As String
    Dim TargetRange As Range

    Set TargetRange = Me.UsedRange ' Users can change target range here
    delimiter = ", " ' Users can change the delimiter here

    If Target.Count > 1 Or Intersect(Target, TargetRange) Is Nothing Then Exit Sub
    On Error Resume Next
    Set xRng = TargetRange.SpecialCells(xlCellTypeAllValidation)
    If xRng Is Nothing Then Exit Sub
    Application.EnableEvents = False

    xValue2 = Target.Value
    Application.Undo
    xValue1 = Target.Value
    Target.Value = xValue2
    If xValue1 <> "" And xValue2 <> "" Then
        If Not (xValue1 = xValue2 Or _
                InStr(1, xValue1, delimiter & xValue2) > 0 Or _
                InStr(1, xValue1, xValue2 & delimiter) > 0) Then
            Target.Value = xValue1 & delimiter & xValue2
        Else
            Target.Value = xValue1
        End If
    End If

    Application.EnableEvents = True
    On Error GoTo 0
End Sub

Uma captura de ecrã do código VBA colado no editor VBA do Excel

Resultado

Quando regressar à folha de cálculo, a Lista suspensa permitirá que escolha várias opções, conforme demonstrado abaixo:

Uma captura de ecrã da demonstração animada que mostra seleções múltiplas numa lista pendente do Excel

Notas:
O código VBA acima:
  • Aplica-se a todas as validações de dados do tipo Lista suspensa na Planilha Atual, tanto as já existentes como as que forem criadas futuramente.
  • Impede que selecione o mesmo item mais do que uma vez em cada lista suspensa.
  • Utilize a vírgula como separador para o Número de Itens Selecionados. Para utilizar outros delimitadores, por favor consulte esta secção para alterar o separador.

Utilizar Kutools para Excel em poucos cliques

Se não se sentir à vontade com o VBA, uma alternativa mais simples é a funcionalidade «Criar lista suspensa com seleções múltiplas» do «Kutools para Excel». Esta ferramenta intuitiva simplifica a ativação de seleções múltiplas numa lista suspensa, permitindo-lhe personalizar o separador e gerir duplicados com facilidade, de acordo com as suas necessidades.

Kutools para Exceloferece mais de 300 funcionalidades avançadas para simplificar tarefas complexas, impulsionando criatividade e eficiência.Integrado com capacidades de IA, o Kutools automatiza tarefas com precisão, tornando a gestão de dados descomplicada.Informações detalhadas sobre Kutools para Excel...         Teste gratuito...

Após instalar o Kutools para Excel, aceda ao separador «Kutools», selecione «Lista suspensa» > «Criar lista suspensa com seleções múltiplas» e configure da seguinte forma.

  1. Especifique o intervalo que contém a lista suspensa da qual precisa selecionar vários itens.
  2. Especifique o separador para o número de itens selecionados na célula da lista suspensa.
  3. Clique em «OK» para finalizar as definições.
    Uma captura de ecrã do ecrã de configuração da Lista Pendente de Seleção Múltipla do Kutools com definições para intervalo e opções de separador
Resultado

Agora, ao clicar numa célula com uma lista suspensa de intervalo limitado, surge imediatamente uma caixa de lista ao seu lado. Basta clicar no botão «+» junto a cada item para o adicionar à célula e no botão «–» para remover os que já não deseja. Veja a demonstração abaixo:

Uma captura de ecrã que mostra uma demonstração de como gerir seleções múltiplas numa lista pendente do Excel utilizando o Kutools

Notas:
  • Marque a opção «Inserir quebra de linha após o separador» para exibir o Número de Itens Selecionados verticalmente dentro da célula. Caso prefira uma listagem horizontal, mantenha esta opção desmarcada.
  • Marque a opção «Ativar função de pesquisa» para adicionar uma barra de pesquisa à sua lista suspensa.
  • Para utilizar esta funcionalidade, por favor transfira e instale o Kutools para Excel primeiro.

Mais operações para Lista suspensa de seleção múltipla

Esta secção reúne diversos cenários que podem surgir ao ativar seleções múltiplas na lista suspensa de Validação de Dados.


Permitir itens duplicados em Lista suspensa

Os itens duplicados podem tornar-se um problema quando são permitidas seleções múltiplas numa lista suspensa. O código VBA acima impede a inclusão de itens duplicados na lista suspensa. Caso pretenda manter itens duplicados, experimente o código VBA nesta secção.

Código VBA: Permitir duplicados na Lista suspensa de validação de dados

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20240118
    Dim xRng As Range
    Dim xValue1 As String
    Dim xValue2 As String
    Dim delimiter As String
    Dim TargetRange As Range

    Set TargetRange = Me.UsedRange ' Users can change target range here
    delimiter = ", " ' Users can change the delimiter here

    If Target.Count > 1 Or Intersect(Target, TargetRange) Is Nothing Then Exit Sub
    On Error Resume Next
    Set xRng = TargetRange.SpecialCells(xlCellTypeAllValidation)
    If xRng Is Nothing Then Exit Sub
    Application.EnableEvents = False

    xValue2 = Target.Value
    Application.Undo
    xValue1 = Target.Value
    Target.Value = xValue2
    If xValue1 <> "" And xValue2 <> "" Then
        Target.Value = xValue1 & delimiter & xValue2
    End If

    Application.EnableEvents = True
    On Error GoTo 0
End Sub
Resultado

Agora pode selecionar vários itens na Lista Suspensa da Planilha Atual. Para repetir um item numa célula com Lista Suspensa, basta continuar a selecioná-lo na lista. Veja a imagem:

Uma captura de ecrã da demonstração animada que mostra seleções duplicadas numa lista pendente do Excel


Remover quaisquer itens existentes de Lista suspensa

Após selecionar vários itens de uma lista suspensa, poderá por vezes precisar de remover um item existente da célula com a lista suspensa. Esta secção apresenta outro excerto de código VBA para o ajudar a realizar esta tarefa.

Código VBA: Remover quaisquer itens existentes da célula Lista suspensa

Private Sub Worksheet_Change(ByVal Target As Range)
    'Updated by Extendoffice 20240118
    Dim xRngDV As Range
    Dim TargetRange As Range
    Dim oldValue As String
    Dim newValue As String
    Dim delimiter As String
    Dim allValues As Variant
    Dim valueExists As Boolean
    Dim i As Long
    Dim cleanedValue As String

    Set TargetRange = Me.UsedRange ' Set your specific range here
    delimiter = ", " ' Set your desired delimiter here

    If Target.CountLarge > 1 Then Exit Sub

    ' Check if the change is within the specific range
    If Intersect(Target, TargetRange) Is Nothing Then Exit Sub

    On Error Resume Next
    Set xRngDV = Target.SpecialCells(xlCellTypeAllValidation)
    If xRngDV Is Nothing Or Target.Value = "" Then
        ' Skip if there's no data validation or if the cell is cleared
        Application.EnableEvents = True
        Exit Sub
    End If
    On Error GoTo 0

    If Not Intersect(Target, xRngDV) Is Nothing Then
        Application.EnableEvents = False
        newValue = Target.Value
        Application.Undo
        oldValue = Target.Value
        Target.Value = newValue

        ' Split the old value by delimiter and check if new value already exists
        allValues = Split(oldValue, delimiter)
        valueExists = False
        For i = LBound(allValues) To UBound(allValues)
            If Trim(allValues(i)) = newValue Then
                valueExists = True
                Exit For
            End If
        Next i

        ' Add or remove value based on its existence
        If valueExists Then
            ' Remove the value
            cleanedValue = ""
            For i = LBound(allValues) To UBound(allValues)
                If Trim(allValues(i)) <> newValue Then
                    If cleanedValue <> "" Then cleanedValue = cleanedValue & delimiter
                    cleanedValue = cleanedValue & Trim(allValues(i))
                End If
            Next i
            Target.Value = cleanedValue
        Else
            ' Add the value
            If oldValue <> "" Then
                Target.Value = oldValue & delimiter & newValue
            Else
                Target.Value = newValue
            End If
        End If

        Application.EnableEvents = True
    End If
End Sub
Resultado

Este código VBA permite-lhe selecionar vários itens numa lista suspensa e remover facilmente qualquer um dos itens já escolhidos. Após selecionar vários itens, basta clicar novamente no item que pretende remover para o eliminar da seleção.

Uma captura de ecrã da demonstração animada que mostra como remover itens existentes de uma lista pendente no Excel


Definir um separador personalizado

O delimitador está definido como vírgula nos códigos VBA acima. Pode alterar esta variável para qualquer caractere desejado e utilizá-lo como separador nas seleções de Lista suspensa. Eis como proceder:

Como pode observar, todos os códigos VBA acima contêm a seguinte linha:

delimiter = ", "

Basta substituir a vírgula pelo separador que preferir. Por exemplo, se quiser separar os itens por ponto e vírgula, altere a linha para:

delimiter = "; "
Nota: Para alterar o delimitador para um caractere de nova linha nestes códigos VBA, altere esta linha para:
delimiter = vbNewLine

Definir um Intervalo limitado

Os códigos VBA acima aplicam-se a todas as listas suspensas na folha atual. Se pretender que os códigos VBA se apliquem apenas a um determinado intervalo de listas suspensas, pode especificar esse intervalo no código VBA da seguinte forma:

Como pode observar, todos os códigos VBA acima contêm a seguinte linha:

Set TargetRange = Me.UsedRange

Basta alterar a linha para:

Set TargetRange = Me.Range("C2:C10")
Nota: Aqui, C2:C10 é o intervalo que contém as Lista suspensa que pretende definir como seleções múltiplas.

Executar numa folha protegida

Imagine que protegeu uma folha de cálculo com a palavra-passe «123» e definiu as células da lista suspensa como «Desbloqueadas» antes de ativar a proteção, garantindo assim que a funcionalidade de seleção múltipla permanece ativa após a proteção. Contudo, os códigos VBA mencionados anteriormente não funcionam neste cenário; esta secção apresenta um script VBA alternativo, concebido especificamente para gerir a seleção múltipla numa folha protegida.

Código VBA: Ativar seleção múltipla em Lista suspensa sem duplicados


Private Sub Worksheet_Change(ByVal Target As Range)
    'Updated by Extendoffice 20240118
    Dim xRng As Range
    Dim xValue1 As String
    Dim xValue2 As String
    Dim delimiter As String
    Dim TargetRange As Range
    Dim isProtected As Boolean
    Dim pswd As Variant

    Set TargetRange = Me.UsedRange ' Set your specific range here
    delimiter = ", " ' Users can change the delimiter here

    If Target.Count > 1 Or Intersect(Target, TargetRange) Is Nothing Then Exit Sub
    
    ' Check if sheet is protected
    isProtected = Me.ProtectContents
    If isProtected Then
        ' If protected, temporarily unprotect. Adjust or remove the password as needed.
        pswd = "yourPassword" ' Change or remove this as needed
        Me.Unprotect Password:=pswd
    End If

    On Error Resume Next
    Set xRng = TargetRange.SpecialCells(xlCellTypeAllValidation)
    If xRng Is Nothing Then
        If isProtected Then Me.Protect Password:=pswd
        Exit Sub
    End If
    Application.EnableEvents = False

    xValue2 = Target.Value
    Application.Undo
    xValue1 = Target.Value
    Target.Value = xValue2
    If xValue1 <> "" And xValue2 <> "" Then
        If Not (xValue1 = xValue2 Or _
                InStr(1, xValue1, delimiter & xValue2) > 0 Or _
                InStr(1, xValue1, xValue2 & delimiter) > 0) Then
            Target.Value = xValue1 & delimiter & xValue2
        Else
            Target.Value = xValue1
        End If
    End If

    Application.EnableEvents = True
    On Error GoTo 0

    ' Re-protect the sheet if it was protected
    If isProtected Then
        Me.Protect Password:=pswd
    End If
End Sub
Nota: No código, certifique-se de substituir “yourPassword” na linha pswd = «yourPassword» pela palavra-passe real utilizada para proteger a folha de cálculo. Por exemplo, se a sua palavra-passe for "abc123", a linha deverá ser pswd = "abc123".

Ao ativar seleções múltiplas nas listas suspensas do Excel, melhora significativamente a funcionalidade e flexibilidade das suas folhas de cálculo. Quer esteja à vontade com programação VBA ou prefira uma solução mais simples, como o Kutools, pode agora transformar as suas listas suspensas padrão em ferramentas dinâmicas de seleção múltipla. Com estas competências, está preparado para criar documentos do Excel mais dinâmicos e intuitivos. E se deseja aprofundar ainda mais as capacidades do Excel, o nosso site oferece uma vasta coleção de tutoriais.Descubra mais dicas e truques do Excel aqui.

As melhores ferramentas de produtividade para o Office

🤖KUTOOLS AI Assistente: Revolucione o Análise de Dados com base em:Execução Inteligente   |  Gerar Código|  Criar fórmulas personalizadas  |  Analisar Dados e Gerar Gráficos|  Invocar Funções Aprimoradas
Funcionalidades Populares:Localizar, Destacar ou Marcar Duplicatas   |  Excluir linhas em branco   |  Combinar Colunas ou Células sem Perder Dados   |   Arredondamento sem usar fórmula...
Super PROC:VLookup com Múltiplos Critérios  |  VLookup com Múltiplos Valores  |   VLookup em Múltiplas Folhas   |   Correspondência Fuzzy....
Lista Suspensa Avançada:Criar Rapidamente Lista de Seleção   |  Lista de Seleção Dependente   |  Lista de Seleção com Seleção Múltipla....
Gestor de Colunas:Adicionar um Número Específico de Colunas|Mover Colunas|Alternar o Estado de Visibilidade das Colunas Ocultas|Comparar Intervalos e Colunas...
Funcionalidades em Destaque:Grade de foco   |  Visualização de Design   |Barra de fórmulas aprimorada   | Gestor de Pastas de Trabalho e Folhas   |  Biblioteca de Recursos(Texto Automático)|  Seleção de Data   |  Consolidar Planilhas  |  Encriptar/Descriptografar Células   | Enviar Emails por Lista   |  Super Filtro   |   Filtro Especial(Filtrar Células com Fonte em Negrito/itálico/rasurado...) ...
Principais Conjuntos de Ferramentas 15:12 Ferramentas de Texto(Adicionar Texto ,Excluir Caracteres Específicos , ...)|50+   Tipos de Gráfico (Gráfico de Gantt, ...)|   40+ Fórmulas Práticas (Calcular a idade com base na data de nascimento , ...)|   19 Ferramentas de Inserção(Inserir QR Code ,Inserir Imagem a Partir do Caminho , ...)|   12 Ferramentas de Conversão(Converter em Palavras ,Conversão de moeda , ...)|   7 Ferramentas de Mesclar e Dividir(Mesclar Linhas Avançado ,Dividir Células , ...)|... e muito mais
Utilize o Kutools no seu idioma preferido – suporta inglês, espanhol, alemão, francês, chinês e mais 40+ outros!

Potencie as suas competências no Excel com Kutools para Excel e experimente uma eficiência como nunca antes.O Kutools para Excel oferece mais de 300 funcionalidades avançadas para impulsionar a sua produtividade e poupar tempo.Clique aqui para obter a funcionalidade de que mais precisa...


Office Tab Traz interface com separadores ao Office e torna o seu trabalho muito mais fácil

  • Ative a edição e leitura com separadores no Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Abra e crie vários documentos em novos separadores da mesma janela, em vez de em janelas separadas.
  • Aumenta a sua produtividade em 50 % e reduz centenas de cliques do rato diários!

Todos os extras Kutools. Um único instalador

Kutools for Office inclui extras para Excel, Word, Outlook e PowerPoint, além do Office Tab Pro, sendo ideal para equipas que trabalham em várias aplicações do Office.

ExcelWordOutlookTabsPowerPoint
  • Suite tudo-em-um— extras para Excel, Word, Outlook e PowerPoint + Office Tab Pro
  • Um instalador, uma licença— configuração em minutos (pronto para MSI)
  • Funciona melhor em conjunto— produtividade simplificada em todas as aplicações do Office
  • Teste gratuito de 30 dias com todas as funcionalidades— sem registo nem cartão de crédito
  • Melhor relação qualidade-preço— poupe face à compra individual dos extras