Lista desplegable dependiente de otras

Tengo diez listas desplegables para seleccionar el nombre que desee, la cuestión es que si selecciono un nombre en una de ellas cómo puedo hacer para que ese nombre que ya ha sido seleccionado no salga en la lista o listas siguientes, y así sucesivamente en el caso de que siga seleccionando nombres. No sé si me he explicado bien.

1 Respuesta

Respuesta
3

Se tendría que hacer con una macro, pero antes de realizar la macro, dime lo siguiente:

1. En qué hoja tienes tu lista de nombres

2. En cuál columna tienes tu lista de nombre

3. En cuál fila empiezan tus nombres

4. En qué hoja y en cuáles celdas tienes tus 10 listas desplegables

  1. Tengo mi lista de nombres en una hoja llamada “Empleados”
  2. Se encuentra en una tabla que contiene más datos refiriéndome sólo a la columna 2 “Tabla24[Nombre]”
  3. Empieza en la fila 13, como depende del número de empleados registrados y puede variar además, creo que podemos referirnos a “Tabla24[Nombre]”.
  4. En la hoja “Balance” y en el rango D16:D25 es donde se encuentra las diez listas desplegables.

Gracias.

Sigue las instrucciones:

1. Para filtrar los nombres es necesario que crees una hoja llamada "nombres"

2. Inserta la siguiente macro en los eventos de tu hoja "Balance"

Private Sub Worksheet_SelectionChange(ByVal target As Range)
'Por.Dante Amor
    If target.Count > 1 Then Exit Sub
    Set celdas = Range("D16:D25")
    Set h1 = Sheets("Empleados")
    Set h2 = Sheets("nombres")
    col = "J"
    '
    If Not Intersect(target, celdas) Is Nothing Then
        h2.Cells.Clear
        u = h1.Range(col & Rows.Count).End(xlUp).Row
        j = 1
        For Each r In h1.Range("Tabla24[Nombre]")
            existe = False
            For Each c In celdas
                If c.Address <> target.Address Then
                    If r.Value = c.Value Then
                        existe = True
                        Exit For
                    End If
                End If
            Next
            If existe = False Then
                h2.Cells(j, "A") = r.Value
                j = j + 1
            End If
        Next
        '
        u2 = h2.Range("A" & Rows.Count).End(xlUp).Row
        With target.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
                Operator:=xlBetween, Formula1:="=" & h2.Name & "!A1:A" & u2
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = ""
            .ErrorTitle = ""
            .InputMessage = ""
            .ErrorMessage = ""
            .ShowInput = True
            .ShowError = True
        End With
    End If
End Sub

Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet("Balace")
  4. Del lado derecho copia la macro

Listo! Cada vez que selecciones alguna de las celdas "D16:D25" de tu hoja "Balace" se actualizará la lista.


Saludos. Dante Amor

He creado una hoja llamada "nombres"

He insertado la macro que me has puesto en el evento de la hoja "Balance"

He compilado el programa y me da error de compilación que no se ha definido la variable "celdas", supongo que también me pedirá para la  "h1 y "h2" y ¿En la hoja nombre que debo escribir o hacer?

Si tienes esta instrucción : "option explicit" en alguna macro de tu libro, borra esa instrucción.

En la hoja "nombres" no hagas nada, la macro la utiliza para ir filtrando los nombres que vas seleccionando.


Si ya quitaste la instrucción "Option Explicit", ya no debes tener problemas.

Saludos. Dante Amor

Recuerda valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas