Ir a hoja según celda activa

A ver si alguien puede ayudarme con algo que he buscado y buscado pero no encuentro la manera de hacerlo.

Tengo en la hoja1 un calendario. La idea es al señalar un día y ejecutar una macro con un botón me muestre una hoja especifica.

Podría hacerlo si se puede a partir de una plantilla ya creada que al señalar el día y ejecutar la macro me cree una hoja nueva con un nombre con referencia al dato de la celda activa o bien simplemente me habrá una hoja ya creada y específica para cada día que previamente estaba oculta.

No sé si la explicación es buena y se entiende bien.

1 respuesta

Respuesta
1

Hol.a

¿A qué te refieres con que tienes un calendario? ¿Algún tipo de control ActiveX? ¿Una día/fecha en cada celda? ¿Otra cosa? Y ¿Cuál es la relación entre esos datos y los nombres de las hojas? O sea ¿cómo es la distribución/formato del nombre de dichas hojas? ¿Hay tantas hojas en ese libro como fechas?

Abraham Valencia

Buenas tardes, me explique mal.

Es un calendario con sus 12 meses. Entonces quiero que poner el ratón por ejemplo en el día 1 de enero, esa celda es la activa, pulsar el botón y que vaya a la hoja (1/1/2018) que estaba previamente oculta.

Cuando acabe de introducir los datos en esta darle a validar y que me vuelva al calendario y vuelva a ocultar está hoja. 

Hol.a

Pues creo que lo mejor es que coloques tu archivo en algún "Drive" y compartas el enlace por aquí ya que sigue sin entenderse eso de que tienes "un calendario con sus 12 meses" y además las hojas no permiten en sus nombres el símbolo slash "/".

Abraham Valencia

este es el calendario que tengo, el nombre de las otras hojas podría ser otro dije ese nombre como ejemplo 

Hol.a

Vamos a suponer que los nombres de tus hojas son de este tipo: "5-enero-2018" (obviamente sin las comillas). Entonces, suponiendo que estas en cualquier día de tu calendario, activando esta macro seleccionará la hoja que tenga como nombre el día correspondiente:

Dim Nombrehoja As String
Let Nombrehoja = ActiveCell.Value & "-" & ActiveCell.End(xlUp).Value & "-" & Range("P2").Value
Sheets("Nombrehoja").Select

Ya tú adáptala y/o mejórala poniendole, por ejemplo, algún controlador de error si no existe la hoja con el nombre correspondiente.

Salu2

Abraham Valencia

La he probado pero no me funciona. 

https://drive.google.com/file/d/0BxK_qGNg_c8geHBMMnlhTGVoMDkxcHJnZEZGOEhCemVtTjVN/view?usp=drivesdk 

No doy con la tecla

Buenas tardes, has podido echarle un vistazo?

gracias de nuevo 

un saludo

Hol.a

Siempre es bueno dar detalles desde el inicio, por ejemplo no habías comentado que en realidad varios de los textos eran producto de fórmulas y que las fechas van cambiando pues es un calendario (casi) perpetuo. Por cierto, siempre se recomienda no usar celda combinadas:

Dim Nombrehoja As String, Cadena As String, MiCelda As String
If ActiveCell.End(xlUp).HasFormula = False Then
    Cadena = ActiveCell.End(xlUp).Offset(-1, 0).MergeArea.Address
    MiCelda = Left(Cadena, InStr(1, Cadena, ":") - 1)
    Let Nombrehoja = ActiveCell.Text & "-" & Range(MiCelda).Text & "-" & Range("P2").Value
    Sheets(Nombrehoja).Select
Else
    Let Nombrehoja = ActiveCell.Text & "-" & ActiveCell.End(xlUp).Text & "-" & Range("P2").Value
    Sheets(Nombrehoja).Select
End If

Salu2

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas