Seleção múltipla em lista suspensa no Excel

Recentemente recebemos uma pergunta de um de nossos leitores a respeito da possibilidade fazer seleção múltipla em lista suspensa no Excel. Como sabemos, o Excel permite que o usuário selecione apenas um único item por vez em uma lista suspensa. Contudo, se você tiver trabalhando com um formulário pode haver a necessidade de selecionar várias itens em uma lista suspensa.

Abaixo é mostrado um exemplo de como funciona a seleção múltipla em lista suspensa no Excel. E se você quer aprender a criar este recurso, continue acompanhando o passo a passo a seguir:

Seleção múltipla em lista suspensa no Excel

Já está interessado(a) no que vem por aí? Então compartilhe com sua rede de amigos para que mais pessoas possam aprender a criar o recurso de seleção múltipla em lista suspensa no Excel:

Facebook

Twitter

Google+

LinkedIn

Criando a lista suspensa

O primeiro passo para ter uma lista suspensa no Excel com o recurso de seleção múltipla é simplesmente criar a lista suspensa.

Não entraremos em detalhes a respeito de como criar a lista suspensa, mas você pode conferir o artigo Validação de Dados por Lista Suspensa, onde mostramos o passo a passo para criá-la.

Uma vez que já você tenha criado a sua lista suspensa no Excel, ela terá o funcionamento semelhante ao exemplo mostrado abaixo:

lista suspensa com várias seleções

Adicionando seleção múltipla em lista suspensa

Agora que já temos a nossa lista suspensa criada no Excel, precisamos habilita-la para permitir várias seleções. E para isso precisamos adicionar um código VBA.
Para isso, basta acessar a guia Desenvolvedor > Visual Basic e adicionar o código abaixo na planilha que você está trabalhando.

Note: Se você não tiver a guia Desenvolvedor habilitada em seu Excel, confira o artigo: Habilitando a Guia Desenvolvedor no Excel

Private Sub Worksheet_Change(ByVal Target As Range)
' To Select Multiple Items from a Drop Down List in Excel
Dim Oldvalue As String
Dim Newvalue As String
Application.EnableEvents = True
On Error GoTo Exitsub
If Target.Address = "$C$1" Then
 If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then
 GoTo Exitsub
 Else: If Target.Value = "" Then GoTo Exitsub Else
 Application.EnableEvents = False
 Newvalue = Target.Value
 Application.Undo
 Oldvalue = Target.Value
 If Oldvalue = "" Then
 Target.Value = Newvalue
 Else
 If InStr(1, Oldvalue, Newvalue) = 0 Then
 Target.Value = Oldvalue & ", " & Newvalue
 Else:
 Target.Value = Oldvalue
 End If
 End If
 End If
End If
Application.EnableEvents = True
Exitsub:
Application.EnableEvents = True
End Sub

Créditos do código: Trump Excel

Importante: Onde está destacado em negrito (If Target.Address = “$C$1” Then) refere-se a célula onde está a lista suspensa que criamos neste exemplo. Caso sua lista esteja em outra célula, basta alterar essa referência.

Você também pode optar por deixar o recurso de seleção múltipla em lista suspensa em toda a coluna. Para isso, basta alterar o código destacado em negrito para: (If Target.Column = 3 Then). Neste exemplo estamos informando que toda a coluna C irá ter o recurso de seleção múltipla.

Ao finalizar, não se esqueça de salvar a sua planilha no formato “Planilha Habilitada para Macros”. XLSM

Baixe o exemplo e bom trabalho!