Ir para o conteúdo principal

Selecione vários itens na lista suspensa do Excel – guia completo

As listas suspensas do Excel são uma ferramenta fantástica para garantir a consistência dos dados e facilidade de entrada. No entanto, por padrão, eles restringem a seleção de apenas um item. Mas e se você precisar selecionar vários itens da mesma lista suspensa? Este guia abrangente explorará métodos para permitir seleções múltiplas em listas suspensas do Excel, gerenciar duplicatas, definir separadores personalizados e definir o escopo dessas listas.

Dica: antes de aplicar os métodos a seguir, certifique-se de ter criado listas suspensas em suas planilhas com antecedência. Se você quiser saber como criar listas suspensas de validação de dados, siga as instruções deste artigo: Como criar listas suspensas de validação de dados no Excel.

Habilitando múltiplas seleções na lista suspensa

Esta seção fornece dois métodos para ajudá-lo a habilitar múltiplas seleções na lista suspensa do Excel.

Usando código VBA

Para permitir múltiplas seleções na lista suspensa, você pode usar Visual Basic para aplicativos (VBA) no Excel. O script pode modificar o comportamento de uma lista suspensa para torná-la uma lista de múltipla escolha. Por favor, faça o seguinte.

Etapa 1: abra o editor de planilha (código)
  1. Abra a planilha que contém a lista suspensa para a qual você deseja habilitar a seleção múltipla.
  2. Clique com o botão direito na guia da planilha e selecione Ver código no menu de contexto.
Etapa 2: use o código VBA

Agora copie o seguinte código VBA e cole-o na janela da planilha de abertura (Código).

Código VBA: habilite múltiplas seleções na lista suspensa 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

Resultado

Quando você retornar à planilha, a lista suspensa permitirá que você escolha várias opções; veja a demonstração abaixo:

Notas:
O código VBA acima:
  • Aplica-se a todas as listas suspensas de validação de dados na planilha atual, tanto as existentes quanto as criadas no futuro.
  • Impede que você escolha o mesmo item mais de uma vez em cada lista suspensa.
  • Usa vírgula como separador para os itens selecionados. Para usar outros delimitadores, por favor veja esta seção para alterar o separador.

Usando o Kutools para Excel com apenas alguns cliques

Se você não se sente confortável com o VBA, uma alternativa mais fácil é Kutools for Excel's Lista suspensa de seleção múltipla recurso. Esta ferramenta fácil de usar simplifica a ativação de múltiplas seleções em listas suspensas, permitindo personalizar o separador e gerenciar duplicatas sem esforço para atender às suas diferentes necessidades.

Depois de instalando Kutools para Excel, Vá para o Kutools guia, selecione Lista suspensa > Lista suspensa de seleção múltipla. Então você precisa configurar da seguinte maneira.

  1. Especifique o intervalo que contém a lista suspensa na qual você precisa selecionar vários itens.
  2. Especifique o separador para os itens selecionados na célula da lista suspensa.
  3. Clique OK para completar as configurações.
Resultado

Agora, quando você clica em uma célula com uma lista suspensa no intervalo especificado, uma caixa de listagem aparecerá ao lado dela. Basta clicar no botão "+" ao lado dos itens para adicioná-los à célula suspensa e clicar no botão "-" para remover os itens que você não deseja mais. Veja a demonstração abaixo:

Notas:
  • Verifique o Quebrar texto após inserir um separador opção se desejar exibir os itens selecionados verticalmente dentro da célula. Se preferir uma listagem horizontal, deixe esta opção desmarcada.
  • Verifique o Ativar pesquisa opção se desejar adicionar uma barra de pesquisa à sua lista suspensa.
  • Para aplicar este recurso, por favor baixe e instale o Kutools para Excel em primeiro lugar.

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

Esta seção coleta os diferentes cenários que podem ser necessários ao ativar diversas seleções na lista suspensa Validação de dados.


Permitindo itens duplicados na lista suspensa

Duplicatas podem ser um problema quando múltiplas seleções são permitidas em uma lista suspensa. O código VBA acima não permite itens duplicados na lista suspensa. Se você precisar manter itens duplicados, experimente o código VBA nesta seção.

Código VBA: permitir duplicatas 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 você pode selecionar vários itens nas listas suspensas da planilha atual. Para repetir um item em uma célula da lista suspensa, continue selecionando esse item na lista. Veja a captura de tela:


Removendo quaisquer itens existentes da lista suspensa

Depois de selecionar vários itens de uma lista suspensa, às vezes você pode precisar remover um item existente da célula da lista suspensa. Esta seção fornece outro trecho de código VBA para ajudá-lo a realizar essa tarefa.

Código VBA: remova todos os itens existentes da célula da 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 selecionar vários itens de uma lista suspensa e remover facilmente qualquer item que você já escolheu. Após selecionar vários itens, caso queira remover algum específico, basta selecioná-lo novamente na lista.


Configurando um separador personalizado

O delimitador é definido como vírgula nos códigos VBA acima. Você pode modificar esta variável para qualquer caractere preferido para usar como separador para as seleções da lista suspensa. Aqui está como você pode fazer:

Como você pode ver, todos os códigos VBA acima têm a seguinte linha:

delimiter = ", "

Você só precisa alterar a vírgula para qualquer separador conforme necessário. Por exemplo, você deseja separar os itens por ponto e vírgula, altere a linha para:

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

Definir um intervalo especificado

Os códigos VBA acima se aplicam a todas as listas suspensas da planilha atual. Se desejar que os códigos VBA se apliquem apenas a um determinado intervalo de listas suspensas, você pode especificar o intervalo no código VBA acima da seguinte maneira.

Como você pode ver, todos os códigos VBA acima têm a seguinte linha:

Set TargetRange = Me.UsedRange

Você só precisa alterar a linha para:

Set TargetRange = Me.Range("C2:C10")
Note: Aqui C2: C10 é o intervalo que contém a lista suspensa que você deseja definir como seleções múltiplas.

Executando em uma planilha protegida

Imagine que você protegeu uma planilha com a senha "123"e defina as células da lista suspensa como"Desbloqueado"antes de ativar a proteção, garantindo assim que a função de seleção múltipla permaneça ativa após a proteção. No entanto, os códigos VBA mencionados acima não podem funcionar neste caso, e esta seção descreve outro script VBA que é projetado especificamente para lidar com a funcionalidade de seleção múltipla em uma planilha protegida.

Código VBA: habilite a seleção múltipla na lista suspensa sem duplicatas


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
Note: No código, certifique-se de substituir “sua senha" na linha pswd = "sua senha" com a senha real que você usa para proteger a planilha. Por exemplo, se sua senha for "abc123", então a linha deve ser pswd = "abc123".

Ao habilitar múltiplas seleções nas listas suspensas do Excel, você pode aprimorar bastante a funcionalidade e a flexibilidade de suas planilhas. Esteja você confortável com a codificação VBA ou prefira uma solução mais direta como o Kutools, agora você tem a capacidade de transformar suas listas suspensas padrão em ferramentas dinâmicas de seleção múltipla. Com essas habilidades, agora você está equipado para criar documentos Excel mais dinâmicos e fáceis de usar. Para aqueles ansiosos por se aprofundar nos recursos do Excel, nosso site possui diversos tutoriais. Descubra mais dicas e truques do Excel aqui.

Melhores ferramentas de produtividade de escritório

🤖 Assistente de IA do Kutools: Revolucionar a análise de dados com base em: Execução Inteligente   |  Gerar Código  |  Crie fórmulas personalizadas  |  Analise dados e gere gráficos  |  Invocar funções do Kutools...
Recursos mais comuns: Encontre, destaque ou identifique duplicatas   |  Excluir linhas em branco   |  Combine colunas ou células sem perder dados   |   Rodada sem Fórmula ...
Super pesquisa: VLookup de múltiplos critérios    VLookup de múltiplos valores  |   VLookup em várias planilhas   |   Pesquisa Difusa ....
Lista suspensa avançada: Crie rapidamente uma lista suspensa   |  Lista suspensa de dependentes   |  Lista suspensa de seleção múltipla ....
Gerenciador de colunas: Adicione um número específico de colunas  |  Mover colunas  |  Alternar status de visibilidade de colunas ocultas  |  Compare intervalos e colunas ...
Recursos em destaque: Foco da Grade   |  Vista de Design   |   Grande Barra de Fórmula    Gerenciador de pastas de trabalho e planilhas   |  Biblioteca (Auto texto)   |  Data Picker   |  Combinar planilhas   |  Criptografar/Descriptografar Células    Enviar e-mails por lista   |  Super Filtro   |   Filtro Especial (filtro negrito/itálico/tachado...) ...
15 principais conjuntos de ferramentas12 Texto Ferramentas (Adicionar texto, Remover Personagens, ...)   |   50+ de cores Tipos (Gráfico de Gantt, ...)   |   Mais de 40 práticos Fórmulas (Calcule a idade com base no aniversário, ...)   |   19 Inclusão Ferramentas (Insira o código QR, Inserir imagem do caminho, ...)   |   12 Conversão Ferramentas (Números para Palavras, Conversão de moedas, ...)   |   7 Unir e dividir Ferramentas (Combinar linhas avançadas, Dividir células, ...)   |   ... e mais

Aprimore suas habilidades de Excel com o Kutools para Excel e experimente uma eficiência como nunca antes. Kutools para Excel oferece mais de 300 recursos avançados para aumentar a produtividade e economizar tempo.  Clique aqui para obter o recurso que você mais precisa...

Descrição


Office Tab traz 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!