2015-04-27

Listas desplegables que permiten seleccionar múltiples elementos

Title

Problema

Deseamos incluir en una celda más de un elemento de una lista desplegable.

En las celdas B4 y B5 se observa como hemos incluido más de un elemento mediante la lista desplegable.

Solución

Empleamos una solución propuesta en un artículo del blog de Office de Microsoft por Debra Dalgleish.

  1. Creamos una lista desplegable basada en una lista de entradas válidas.
  2. Clic con el botón secundario del ratón sobre la hoja y clic sobre Ver código.
  3. Pegamos el siguiente código.
  4. ' Developed by Contextures Inc.
    ' www.contextures.com
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rngDV As Range
    Dim oldVal As String
    Dim newVal As String
    
    'Ejecuta el código sólo si cambia una celda 
    If Target.Count > 1 Then GoTo exitHandler
      
    Select Case Target.Column
      Case 2        'Esta línea sólo funciona para la columna B
        'Case 2, 5, 6 'Esta línea en caso de múltiples columnas
        On Error Resume Next
        'check the cell for data validation
        Set rngDV = Target.SpecialCells(xlCellTypeAllValidation)
        On Error GoTo exitHandler
        If rngDV Is Nothing Then GoTo exitHandler
        
        If Intersect(Target, rngDV) Is Nothing Then
           'No hace nada
        Else
            Application.EnableEvents = False
            newVal = Target.Value
            Application.Undo
            oldVal = Target.Value
            Target.Value = newVal
            If oldVal <> "" Then
              If newVal <> "" Then
                Target.Value = oldVal _
                  & ", " & newVal
              End If
            End If
        End If
    
    End Select
    
    exitHandler:
      Application.EnableEvents = True
    End Sub
    
    Si la lista desplegable no está en la columna B debemos cambiar una línea de código. En lugar de Case 2 pondremos el número de la columna correspondiente. Si tenemos listas desplegables en múltiples columnas escribiremos el número de las mismas seguido de comas, por ejemplo: Case 2, 5, 6.

  5. Si nuestro fichero no puede guardar macros, lo guardamos como *.xlsm

Referencias

No hay comentarios:

Publicar un comentario

Nube de datos