Selecionar vários itens no Excel Lista suspensa – guia completo
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.

- Permitir itens duplicados
- Remover quaisquer itens existentes
- Definir um separador personalizado
- Definir um(a) Intervalo limitado
- Executar numa folha protegida
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)
- Abra a folha de cálculo que contém a lista suspensa para a qual pretende ativar a seleção múltipla.
- Clique com o botão direito do rato no separador da folha e escolha «Ver Código» no menu de contexto.

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

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

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.
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.
- Especifique o intervalo que contém a lista suspensa da qual precisa selecionar vários itens.
- Especifique o separador para o número de itens selecionados na célula da lista suspensa.
- Clique em «OK» para finalizar as definições.
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:

- 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:

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.

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 = "; "
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")
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
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.
Artigos Relacionados
Preenchimento automático ao escrever numa lista de seleção do Excel
Se tiver uma lista de seleção com validação de dados contendo muitos valores, terá de percorrer toda a lista para encontrar o item pretendido ou digitar a palavra completa diretamente na caixa. Mas e se existisse uma forma de obter preenchimento automático assim que começasse a escrever a primeira letra? Tudo ficaria muito mais fácil! Este tutorial mostra-lhe exatamente como resolver este problema.
Criar uma lista de seleção a partir de outra pasta de trabalho no Excel
É bastante fácil criar uma lista de seleção com validação de dados entre folhas dentro da mesma pasta de trabalho. Mas e se os dados necessários para essa validação estiverem noutra pasta de trabalho? Neste tutorial, vai aprender em detalhe como criar uma lista de seleção a partir de outra pasta de trabalho no Excel.
Criar uma lista pendente pesquisável no Excel
Numa lista pendente com numerosos valores, encontrar o valor pretendido não é tarefa fácil. Anteriormente, apresentámos um método que permite preencher automaticamente a lista pendente ao digitar a primeira letra na caixa da lista. Além dessa funcionalidade de preenchimento automático, também pode tornar a lista pendente pesquisável, aumentando significativamente a eficiência na procura dos valores certos. Para isso, experimente o método apresentado neste tutorial.
Preencha automaticamente outras células ao selecionar um valor numa lista pendente do Excel
Imagine que criou uma lista pendente com base nos valores no intervalo de células B8:B14. Ao selecionar qualquer valor nessa lista, pretende que os valores correspondentes no intervalo C8:C14 sejam preenchidos automaticamente numa célula específica. Os métodos apresentados neste tutorial vão ajudá-lo a resolver este problema com facilidade.
As melhores ferramentas de produtividade para o Office
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.
- 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
Índice
- Permitir seleções múltiplas
- Utilizar código VBA
- Utilizar o Kutools para Excel em poucos cliques
- Mais operações
- Permitir itens duplicados
- Remover quaisquer itens existentes
- Definir um separador personalizado
- Definir um(a) Intervalo limitado
- Executar numa folha protegida
- Artigos Relacionados
- As Melhores Ferramentas de Produtividade para o Office
- Comentários

