Como hacer referencia al propio nombre de la hoja

En la misma aplicación de las que ayer os hice una pregunta que me contesto Elsa Matilde de forma perfecta (Como es habitual en ella, ) aprovechando su respuesta y otra que me hizo Dante Amor hace un tiempo quería hacer que al abrir la hoja si es la del mes actual se me active la siguiente celda de la columna "A", esta fórmula me funciona muy bien en la otra aplicación así que el error es de lo que hago ahora

ultima = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
Cells(ultima + 1, 1).Select

creo que lo que no está bien es hacer referencia al propio nombre de la hoja

Private Sub Worksheet_Activate()
Dim ultima As Long
Dim mes As String

mes = MonthName(Month(Date), False)
If ActiveSheet.CodeName = mes Then
ultima = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
Cells(ultima + 1, 1).Select

Else

Cells(5, 7).Select
End If
End Sub

Lo he probado de estas otras maneras y tampoco me fincionan

'If ActiveSheet.Name = mes Then

'If Hoja3.Name = mes Then

'If Hoja3.CodeName = mes Then

La hoja3 se llama Febrero que es el más actual

1 respuesta

Respuesta
1

Vamos por partes:

'... Hacer que al abrir la hoja si es la del mes actual se me active la siguiente celda de la columna "A"...'

Entonces el código debe ir en el evento Workbook_SheetActivate del libro para evaluar qué hoja se activó. Hoy sería Febrero pero pronto sería Marzo y de este modo no tendrás que colocar el código en todas las hojas.

La siguiente macro se coloca en el objeto WORKBOOK, o sea el libro.

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim ultima As Long
Dim mes As String
'se obtiene el nombre del mes del día actual
mes = MonthName(Month(Date), False)
'se compara en mayúsculas para evitar diferencias de formato en el texto
If UCase(ActiveSheet.Name) = UCase(mes) Then
    'si la hoja coincide con el mes se busca la fila siguiente de la col A
    ultima = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
    Cells(ultima + 1, 1).Select
Else
    'sino se selecciona G5 en cualquiera de las otras hojas
    Cells(5, 7).Select
End If
End Sub

La función te devuelve el texto 'febrero' pero tu hoja se llama Febrero, lo que hace la diferencia.

Podrías, además, incluir TRIM para evitar que el nombre de las hojas tenga algún espacio delante o detrás, lo que haría que no lo reconozca.

If UCase(Trim(ActiveSheet.Name)) = UCase(mes) Then

Sdos.

Elsa

* Te invito a mirar los videos 45 al 48 de mi canal. Allí muestro los eventos de Hojas y Libros.

¡Gracias! 

Es mucho mejor esta puesto que lo que yo pretendía era ponérselo a todas las hojas 

de veras que muchas gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas