¿Lista Desplegable Para Ir A Celdas En Excel?

Me surge la siguiente duda.

Tengo un archivo en excel en donde se muestran 12 tablas aprox. Esto provoca que el archivo sea bastante largo y la única manera de pasar de una tabla a otra es bajando manualmente.

Quisiera que al lado de cada tabla hubiera una lista desplegable para desear a dónde ir, a qué tabla pasar. Daré el ejemplo con 4 tablas.

Tabla 1 abarca A1-A50

Tabla 2 abarca A50-A100

Tabla 2 abarca A100-A150

Tabla 2 abarca A150-A200

La idea sería que en en una celda al lado de cada tabla estuviera una celda con la lista desplegable para que me lleve directamente a la tabla deseada.

Agradezco me ayuden =D

1 respuesta

Respuesta
1

Prueba este código (el código debe ir en el modulo de la Hoja!):

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Listas As Range
Set Listas = Range("G1,G50,G100,G150")
If Not Application.Intersect(Listas, Range(Target.Address)) Is Nothing Then
    Select Case Target.Value
        Case "Tabla 1"
            Application.Goto Range("A1"), True
            Target.Value = ""
        Case "Tabla 2"
            Application.Goto Range("A50"), True
            Target.Value = ""
        Case "Tabla 3"
            Application.Goto Range("A100"), True
            Target.Value = ""
        Case "Tabla 4"
            Application.Goto Range("A150"), True
            Target.Value = ""
    End Select
End If
End Sub

Ajusta según sea necesario. No has dicho que palabras contendrán las listas desplegables así que yo puse "Tabla 1", "Tabla 2"... etc

Tampoco dijiste en que columna estarian las listas, asi que yo las puse en G

Set Listas = Range("G1,G50,G100,G150")

Esas son las celdas donde estaría cada lista, cámbialo a tu conveniencia.

Hola, Muchas gracias por responder

vea que no me funcionó :(

será que estoy haciendo algo mal?

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Listas As Range
Set Listas = Range("B1,B45,B89,B133")
If Not Application.Intersect(Listas, Range(Target.Address)) Is Nothing Then
    Select Case Target.Value
        Case "Enero"
            Application.Goto Range("B1"), True
            Target.Value = ""
        Case "Febrero"
            Application.Goto Range("B45"), True
            Target.Value = ""
        Case "Marzo"
            Application.Goto Range("B89"), True
            Target.Value = ""
        Case "Abril"
            Application.Goto Range("B133"), True
            Target.Value = ""
    End Select
End If
End Sub

1-¿Has puesto el código en el modulo de la hoja? Dando click derecho en la pestaña de la hoja y seleccionando "Ver Código" del menú, así:

2-¿Tienes las macros habilitadas?

3-¿Son listas desplegables o comboboxes?

4-¿Quieres mostrarme una imagen de tu hoja? :P

Si señor, está en el código de la hoja.

Esta es la imagen actual

Pero me gustaría que saliera de la siguiente manera. que al yo darle click en una des las opciones me lleve a la tabla indicada las cuales estarían en este caso más abajo

Si si te entiendo, y eso es exactamente lo que hace el codigo. No tengo idea de por que no te funciona. Si quieres me puedes compartir el libro para ver que sucede y te lo devuelvo arreglado.

Puedes subirlo a cualquier drive y me pasas el link para descargarlo.

Que sea en las cajitas (celdas combinadas) debajo de ir

Ya vi, en el código pusiste Set Listas = Range("B1, B45, B89, B133") pero tus listas no están en esas celdas, por eso no te funcionaba, tu primera lista esta en B5 no en B1.

Te lo hice completo.

Descárgalo aquí: descargar Rutina.xlsm

O si quieres solo copiar el código:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Listas As Range
Set Listas = Range("B5,B49,B93,B137,B181,B255,B269,B313,B357,B401,B445,B489")
If Not Application.Intersect(Listas, Range(Target.Address)) Is Nothing Then
    Select Case Target.Value
        Case "Enero"
            Application.Goto Range("A1"), True
            Target.Value = "1"
        Case "Febrero"
            Application.Goto Range("A45"), True
            Target.Value = "2"
        Case "Marzo"
            Application.Goto Range("A89"), True
            Target.Value = "3"
        Case "Abril"
            Application.Goto Range("A133"), True
            Target.Value = "4"
        Case "Mayo"
            Application.Goto Range("A177"), True
            Target.Value = "5"
        Case "Junio"
            Application.Goto Range("A251"), True
            Target.Value = "6"
        Case "Mayo"
            Application.Goto Range("A265"), True
            Target.Value = "7"
        Case "Mayo"
            Application.Goto Range("A309"), True
            Target.Value = "8"
        Case "Mayo"
            Application.Goto Range("A353"), True
            Target.Value = "9"
        Case "Mayo"
            Application.Goto Range("A397"), True
            Target.Value = "10"
        Case "Mayo"
            Application.Goto Range("A441"), True
            Target.Value = "11"
        Case "Mayo"
            Application.Goto Range("A485"), True
            Target.Value = "12"
    End Select
End If
End Sub

Andy

¡Gracias! Super excelente. Muchas gracias por la ayuda, mejor no pudo quedar. 

Que Dios lo bendiga =D

Copie y pegue y olvide cambiar el nombre de los últimos 6 meses jajaja fíjate que todos dicen Mayo, arréglalo XD

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas