Lista desplegable de excel con selección multiple

Agregar una lista desplegable en excel es muy sencillo. Basta con ir a Datos > Validación de Datos > Permitir: Lista > Origen: (seleccionar datos o agregarlos manualmente separados por «;») – Haces click en Aceptar y listo.

Ahora bien, para agregar una lista desplegable de selección multiple necesitas usar Macros por lo que debes guardar el excel con el macros habilitado.

Estos son los macros para selección multiple que debes agregar en programador > Visual Basic > (elegir hoja):

Private Sub Worksheet_Change(ByVal Target As Range)
Dim valAnterior As String, valNuevo As String, separador As String

separador = " " 'Colocar caracter de separación

On Error GoTo Terminar

If Target.Column = 3 Then 'Elegir la columna en que se habilitará el macros
    If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then
        GoTo Terminar
    Else
        If Target.Value = "" Then
            GoTo Terminar
        Else
            Application.EnableEvents = False
            valNuevo = Target.Value
            Application.Undo
            valAnterior = Target.Value
            If valAnterior = "" Then
                Target.Value = valNuevo
            Else
                If InStr(valAnterior, valNuevo) = 0 Then
                    Target.Value = valAnterior & separador & valNuevo
                Else
                    Target.Value = Replace(Trim(Replace(Replace(Replace(valAnterior, valNuevo, ""), separador, " "), "  ", " ")), " ", separador)
                End If
            End If
        End If
    End If
End If
Terminar:
Application.EnableEvents = True
End Sub

o

Private Sub Worksheet_Change(ByVal Target As Range)
Dim valAnterior As String, valNuevo As String, separador As String

separador = " " 'Colocar caracter de separación

On Error GoTo Terminar

If Target.Address = "$C$2" Then 'Para aplicarlo sobre una columna utilizar Target.Column = número de la columna
    If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then
        GoTo Terminar
    Else
        If Target.Value = "" Then
            GoTo Terminar
        Else
            Application.EnableEvents = False
            valNuevo = Target.Value
            Application.Undo
            valAnterior = Target.Value
            If valAnterior = "" Then
                Target.Value = valNuevo
            Else
                If InStr(valAnterior, valNuevo) = 0 Then
                    Target.Value = valAnterior & separador & valNuevo
                Else
                    Target.Value = Replace(Trim(Replace(Replace(Replace(valAnterior, valNuevo, ""), separador, " "), "  ", " ")), " ", separador)
                End If
            End If
        End If
    End If
End If
Terminar:
Application.EnableEvents = True
End Sub

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *