Hipervínculos con macro en excel

El siguiente macro crear hipervínculos dentro de la misma hoja. El asunto es que debo ir agregando más hojas con otros nombres pero este macro que utilizo define el nombre de la hoja: Selection. Hyperlinks(1).SubAddress = "JLINARES!B33"

Quiero encontrar la manera para que en vez de que aparezca JLINARES(que es el nombre de la hoja donde grabe el macro) sea de otra forma para que yo pueda correr el macro en cualquier otra hoja que yo genere más adelante.

Macro completo:

Sub XD()
'
' XD Macro
'

'
Range("E12").Select
Selection.Copy
Range("F8").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("B12").Select
ActiveWindow.SmallScroll Down:=7
Range("B2").Select
Selection.Hyperlinks(1).SubAddress = "DB!F6"
Range("B12").Select
Selection.Hyperlinks(1).SubAddress = "JLINARES!B33"
Range("C12").Select
Selection.Hyperlinks(1).SubAddress = "JLINARES!B54"
Range("D12").Select
Selection.Hyperlinks(1).SubAddress = "JLINARES!B75"
Range("E12").Select
Selection.Hyperlinks(1).SubAddress = "JLINARES!B96"

...

1 Respuesta

Respuesta
1

Podes declarar la hoja con alguna de estas instrucciones:

hojax = "JLINARES"
O si se trata de la hoja activa:
hojax = ActiveSheet.Name

y luego la instrucción será:

Selection.Hyperlinks(1).SubAddress = hojax & "!B75"

Te lo agradezco en verdad, me a funcionado a la perfección.

Me funciono con este estilo

Selection.Hyperlinks(1).SubAddress = hojax & "!B75"

Me vuelto loco buscando como concatenar.

Solo otra consulta, yo recuerdo que tambien lo intente pidiendo al usuario el nombre de la hoja, asi:

x = (InputBox("Ingrese nombre de hoja", "Nombre"))  
   Selection.Hyperlinks(1).SubAddress = x & "!B33"

pero no me funciono, es valido, o me equivoque en algo?

La instrucción del Inputbox es correcta.

Quizás todavía no tenías ningún hipervínculo en la hoja y la instrucción falla cuando tratás de modificar el Hyperlinks(1).

Sdos!

Gracias todo me salio bien.

Por ultimo, nada más, resulta que la hoja1 es como un indice con nombres que son hiperviculos hacia hojas especificas. Estoy trabajando en la forma para que se puedan agregar nuevos usuarios pregunte el nombre de la hoja y cree el hipervínculo de ese rango donde esta el nombre del usuario(que abarca 8 celdas toda la fila por usuario).

Lo que pensé fue que el usuario agregue los datos en cada celda, al final seleccione todo el rango del nuevo usuario, y crear una macro que convierte esa nueva fila con el formato de las filas anteriores y genere la hoja con el link.

Sub NANI()
'
' NANI Macro
'
'
    y = (InputBox("Ingrese nombre DE HOJA A CREAR", "Nombre"))
    Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = y
    Sheets("Hoja1").Select
    x = ActiveCell.Address
    Range("E11:H11").Select
    Selection.Copy
    Range(x).Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
    Range(x).Select
    ActiveSheet.Hyperlinks.Add Anchor:=Range(x), Address:="", SubAddress:= _
    y & "!A1"
End Sub

el problema es que solo me genera el el link en la primera celda, no en toda la fila que e seleccionado

No está claro tu código:

- Se crea una hoja y se la nombra según el inputbox (y)

-Se pasa a Hoja1 y se guarda en x la referencia a la celda activa... que puede ser cualquiera ... no se indica aquí cuál es.

- De esa Hoja1 se copia un rango (E11:H11) y se pega su formato en esa celda activa

- Allí mismo se establece el vínculo a la nueva hoja

Por lo tanto, si deseas pegar el contenido del rango las instrucciones del copiado/pegado y el vínculo quedarían así:

Sub NANI()
'
' NANI Macro
'
'
    y = (InputBox("Ingrese nombre DE HOJA A CREAR", "Nombre"))
    Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = y
    Sheets("Hoja1").Select
    x = ActiveCell.Address
'se copia el rango y se pega con valores y formatos en celda activa
    Range("E11:H11").Copy
    Range(x).Select
    ActiveSheet.Paste
    ActiveSheet.Hyperlinks.Add Anchor:=Range(Selection.Address), Address:="", SubAddress:= _
    y & "!A1"
'para quitar el modo de copiado
    Application.CutCopyMode = False
End Sub

Si aún queda algo por resolver por favor inicia una nueva consulta con más aclaraciones. Inicia el cuerpo del mensaje con el texto 'Para Elsa' .

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas