Macro visual basic para excel que me lleve a otra hoja al hacer click o doble click en una celda.

Necesito que al hacer click o doble click sobre una celda designada por variables, me lleve a otra hoja del libro actual.

La Macro que tengo creada, dibuja una tabla con tantas filas como hojas tiene el libro, y escribe en cada columna el nombre de la hoja, una cantidad, y el resultado de una operación. Quiero hacer que a continuación de cada fila, escriba "ir a la hoja", y al darle click o doble click, me lleve directamente a la hoja que corresponde a esa fila de la tabla recién creada.

Lo de "ir a la hoja" ya está hecho. Sólo necesito saber cómo hacer para al darle click, me lleve a esa hoja. (Por posición de hoja en el libro, no por el nombre de la hoja)

Cabe decir que llevo todo el día con esto y no doy con la tecla.

1 respuesta

Respuesta
1

H o l a:

Puedes poner una imagen de cómo tienes los datos en la hoja donde tienes dibujada la tabla con las filas de las hojas.

Procura que en la imagen se vean las filas y las columnas de excel y los nombres de las hojas.

S aludos

Gracias por la ayuda. Subo la imagen. 

H o l a:

Pon la siguiente macro en los eventos de tu hoja:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Por.Dante Amor
    If Target.Count > 1 Then Exit Sub
    u = Range("G" & Rows.Count).End(xlUp).Row
    If Not Intersect(Target, Range("G2:G" & u)) Is Nothing Then
        If UCase(Target.Value) = "IR A LA HOJA" Then
            hoja = Cells(Target.Row, "B")
            For Each h In Sheets
                If UCase(h.Name) = UCase(hoja) Then
                    existe = True
                    Exit For
                End If
            Next
            If existe Then
                Sheets(hoja).Select
            Else
                MsgBox "No existe la hoja: " & hoja, vbexlcamation, "ERROR"
            End If
        End If
    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(tu hoja)
  4. Del lado derecho copia la macro

¡Gracias! Muy amable por la respuesta!! La probaré mañana en el trabajo.

Se me ha ocurrido una idea al volver a casa de cómo resolverlo de otra forma. Mañana la probaré también y la postearé.

Un saludo y muchas gracias de nuevo!

Funciona genial! Gracias de nuevo.  .-)

Lo que pensé ayer que también funciona es hacerlo mediante hiperenlaces a cada una de las hojas; Siempre que crea una fila, al final añade el hiperenlace a esa hoja de la que obtiene los datos. Copio el código, por si a alguno le sirve.

   WS_Count = ActiveWorkbook.Worksheets.Count
   Range("J13") = WS_Count - 1
   I = 2
   fila = 14
   columna = 2
   Do While I <= WS_Count
       Sheets(I).Select
       nombreHoja = ActiveSheet.Name
       Sheets("LISTADO PRECIOS").Cells(fila, 2).VerticalAlignment = xlCenter
       Sheets("LISTADO PRECIOS").Cells(fila, 2).InsertIndent 1
       Sheets("LISTADO PRECIOS").Cells(fila, 2) = nombreHoja
       Sheets("LISTADO PRECIOS").Cells(fila, 3) = 0
       Sheets("LISTADO PRECIOS").Cells(fila, 3).VerticalAlignment = xlCenter
       Sheets("LISTADO PRECIOS").Cells(fila, 3).HorizontalAlignment = xlCenter
       Sheets("LISTADO PRECIOS").Cells(fila, 4).VerticalAlignment = xlCenter
       Sheets("LISTADO PRECIOS").Cells(fila, 4).HorizontalAlignment = xlCenter
       Sheets("LISTADO PRECIOS").Cells(fila, 4).Value = "UD"
       Sheets("LISTADO PRECIOS").Cells(fila, 5).HorizontalAlignment = xlRight
       Sheets("LISTADO PRECIOS").Cells(fila, 5).InsertIndent 1
       Sheets("LISTADO PRECIOS").Cells(fila, 5).VerticalAlignment = xlCenter
       Sheets("LISTADO PRECIOS").Cells(fila, 5).NumberFormat = "#,##0.00 $"
       Sheets("LISTADO PRECIOS").Cells(fila, 5) = "='" & nombreHoja & "'!O2"
       Sheets("LISTADO PRECIOS").Cells(fila, 6).HorizontalAlignment = xlRight
       Sheets("LISTADO PRECIOS").Cells(fila, 6).InsertIndent 1
       Sheets("LISTADO PRECIOS").Cells(fila, 6).VerticalAlignment = xlCenter
       Sheets("LISTADO PRECIOS").Cells(fila, 6).NumberFormat = "#,##0.00 $"
       'Introduce la formula producto en la celda total
       Sheets("LISTADO PRECIOS").Cells(fila, 6).FormulaR1C1 = "=PRODUCT(R" & fila & "C3, R" & fila & "C5)"
       Sheets("LISTADO PRECIOS").Cells(fila, 7).VerticalAlignment = xlCenter
       'crea un hiperenlace que apunta al nombre de la hoja que le damos
       Sheets("LISTADO PRECIOS").Select
       ActiveSheet.Hyperlinks.Add Anchor:=Cells(fila, 7), _
            Address:="", _
            SubAddress:="'" & nombreHoja & "'!A1", _
            TextToDisplay:="Ir a la hoja"
       fila = fila + 1
       I = I + 1
       hoja = hoja + 1
   Loop

Si te funcionó lo que te envíe y no requieres de más información, podrías cambiar la valoración a la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas