Buenas tardes, soy nuevo en esto de la programacion VBA y las macros. Os comento mi problema, espero que alguien pueda ayudarme.
Necesito crear hipervínculos a hojas ocultas. El caso es que en el momento que la hoja está oculta, el hipervínculo deja de funcionar.
Muchas gracias de antemano.
Hola:
En thisworkbook, inserta el siguiente código y nos comentas que tal te ha funcionado.
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
If Sheets(Target.Name).Visible = False Then
Sheets(Target.Name).Visible = True
Sheets(Target.Name).Activate
End If
End Sub
Espero te sirva
Un saludo
FernandoML
Espero te sirva
Un Saludo
Fernando
Muchas gracias. Lo pruebo y te digo
Buenos días, lo he probado y no me funciona. Seguramente será porque no lo he puesto bien.
Lo que yo quiero es que todas las hojas de un documento estén ocultas y los hipervínculos están en la primera hoja. Y cuando voy entrando a los hipervínculos, estas hojas se muestren, y cuando salgamos de ellas, se vuelvan a ocultar. No se si me he explicado bien.
Si podría darme indicaciones de como hacerlo, teniendo en cuenta que no soy ningún experto en la materia, se lo agradecería.
Hola de nuevo porrompo
Prueba el siguiente código insertandolo en thiswokbook
Espero que esta vez vaya todo mejor
Cualquier problema o duda aqui estamos todos
Dim DirLink As String 'DIRECCION DEL HIPERVINCULO SELECCIONADO
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
DirLink = ActiveCell.Hyperlinks(1).SubAddress
DirLink = Left(DirLink, InStr(1, DirLink, "!", vbTextCompare) - 1)
If Sheets(DirLink).Visible = False Then
Sheets(DirLink).Visible = True
Sheets(DirLink).Activate
Sheets(DirLink).Range("A1").Select
End If
End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
If Sh.Name <> "Menu" Then Sheets(Sh.Name).Visible = False
End Sub
Te envio un ejemplo
Un Saludo
Fernando
Espero te sirva
Un Saludo
Fernando
Buenas tardes, vamos avanzando :D
Es algo muy parecido a esto, pero no todas las hojas tienen que estar ocultas.
Te adjunto un documento donde se refleja a grandes rasgos lo que me interesa. Hay algunas hojas que tienen que estar ocultas y solo se muestren cuando se muestren. Hay otras hojas que siempre tienen que estar presentes como son PYG, Balance...
Gracias de antemano
Hola buen día,
Disculpa Fernando, revisé tu archivo y es justo lo que necesito. Sin embargo, cuando trato de validar la funcionabilidad de éste me aparece el sigueinte error:
"Se ha producido el error '9' en tiempo de ejecución:
Subíndice fuera de intervalo"
¿Me pudieras ayudar a resolverlos por favor? Soy nueva con esto de macros y VBA. Te lo agradecería muchísimo.
Saludos
Buenas tardes:
Disculpa la demora, he estado enfermo y no he podido contestar antes
Prueba el siguiente codigo a ver si es lo que necesitas.
Dim DirLink As String 'DIRECCION DEL HIPERVINCULO SELECCIONADO
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
DirLink = ActiveCell.Hyperlinks(1).SubAddress
DirLink = Left(DirLink, InStr(1, DirLink, "!", vbTextCompare) - 1)
If Sheets(DirLink).Visible = False Then
Sheets(DirLink).Visible = True
Sheets(DirLink).Activate
Sheets(DirLink).Range("A1").Select
End If
End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Select Case Sh.Name
Case "Menu", "Hoja3", "Hoja4", "Hoja5": Exit Sub
Case Else
If Sh.Name <> "Menu" Then Sheets(Sh.Name).Visible = False
End Select
End Sub
He echo alguna modificación. Copia el código en thisworkbook.
Comprueba si es lo que necesitas
Un saludo
Espero te sirva
Un Saludo
Fernando
Buenos días. Lo pruebo y te digo. Ya siento responder tan tarde, pero llevo muchisimo lio encima.
Muchas gracias de antemano.
HOLA ESTE ARCHIVO ES EXCELENTE, POR FAVOR M EPODRIAS AYUDAR COMO PUEDO IMPLEMENTARLO PARA MAS DE 130 HOJAS DE CALCULO, NO PUDE, SOLAMENTE LO DEJA CON LAS HOJAS QUE TIENE EL ARCHIVO.
MIL GRACIAS
Hola FernandoML.
Llegué aqui buscando la forma de hacer hipervinculos a hojas ocultas de excel y que al regresar se vuelvan a ocultar, exactamente como lo hace tu código, pero nada más me funciona con dos de las ocho hojas que tengo ocultas, en las demas me aparece "Error '9' en tiempo de ejercucion: Subíndice fuera de intervalo". No soy nada bueno en esto, pero ya me quebre la cabeza buscando el motivo de que solo en esas dos funcione y no encuentro.
Por favor me ayudas con algun consejo o una pista de que deba revisar, de antemano gracias.
Saludos.
Buenas tardes
Requiero un código muy similar a este pero que funcione al presionar el hipervinculo de un botón, es decir a una forma le coloqué el hipervinculo y requiero que haga lo mismo que te lleve a la hoja oculta y al volver al menu se vuelva a ocultar
gracias de antemano!
Hola @porrompo
Ahora debe funcionar.
He modificado el codigo
Dim DirLink As String 'DIRECCION DEL HIPERVINCULO SELECCIONADO
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
Dim Cont As Integer
Cont = Range(ActiveCell.Address).Hyperlinks.Count 'COMPRUEBO SI EXISTE UN VINCULO A UNA HOJA OCULTA
If Cont = 1 Then
'SI LA HOJA A LA QUE QUEREMOS ACCEDER ESTA OCULTA EJECUTO ESTE CODIGO
DirLink = ActiveCell.Hyperlinks(1).SubAddress 'OBTENGO LA DIRECCION DEL HIPERVINCULO
DirLink = Left(DirLink, InStr(1, DirLink, "!", vbTextCompare) - 2) 'ELIMINO PARTE DEL LA DIRECCION PARA OBTENER SOLAMENTE EL NOMBRE
DirLink = Replace(DirLink, "'", "")
If Sheets(DirLink).Visible = False Then
Sheets(DirLink).Visible = True
Sheets(DirLink).Activate
Sheets(DirLink).Range("A1").Select
End If
End If
End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Select Case Sh.Name
Case "SUMARIO ", "VARIABLES ", "RESUMEN ", "PYG ", "BALANCE ": Exit Sub
Case Else
If Sh.Name <> "SUMARIO " Then Sheets(Sh.Name).Visible = False
End Select
End Sub
Espero te sirva
Un Saludo
Fernando
Buenas @FABIAN.V:
En cuanto a tu consulta con 130 hojas, sin tener una plantilla o un archivo es dificil.
De todas formas prueba este codigo, cambiando lo que te indico en negrita.
Dim DirLink As String 'DIRECCION DEL HIPERVINCULO SELECCIONADO
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
Dim Cont As Integer
Cont = Range(ActiveCell.Address).Hyperlinks.Count 'COMPRUEBO SI EXISTE UN VINCULO A UNA HOJA OCULTA
If Cont = 1 Then
'SI LA HOJA A LA QUE QUEREMOS ACCEDER ESTA OCULTA EJECUTO ESTE CODIGO
DirLink = ActiveCell.Hyperlinks(1).SubAddress 'OBTENGO LA DIRECCION DEL HIPERVINCULO
DirLink = Left(DirLink, InStr(1, DirLink, "!", vbTextCompare) - 2) 'ELIMINO PARTE DEL LA DIRECCION PARA OBTENER SOLAMENTE EL NOMBRE
DirLink = Replace(DirLink, "'", "")
If Sheets(DirLink).Visible = False Then
Sheets(DirLink).Visible = True
Sheets(DirLink).Activate
Sheets(DirLink).Range("A1").Select
End If
End If
End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Select Case Sh.Name
Cambiar "SUMARIO ", "VARIABLES ", "RESUMEN ", "PYG ", "BALANCE " del primer case por los nombres de las hojas que quieres que se vean siempre. el resto permaneceran ocultas. OJO, primero debes ocultar las hojas que no quieres que se vean.
Case "SUMARIO ", "VARIABLES ", "RESUMEN ", "PYG ", "BALANCE ": Exit Sub
Case Else
If Sh.Name <> "SUMARIO " Then Sheets(Sh.Name).Visible = False
End Select
End Sub
Espero te sirva
Un Saludo
Fernando
Hola @Francisco B:
En el ultimo codigo que envie tienes la solucion al problema que te aparece.
Espero te sirva
Un Saludo
Fernando
Hola Fernando he aplicado el ultimo codigo que nos facilitaste pero ahora todas las hojas me salen con "error 9" Subindice fuera de rango puedes ayudarme por favor