Activar macro de una hoja desde el ThisWorkbook

¡Que tal expertos! Espero me puedan ayudar.

Tengo un libro de 10 hojas en el que estoy generando una aplicación. En el Workbook_Open () tengo la siguiente macro para que cada que se abra el libro se posicione siempre en la Hoja1 (Portada) y la celda A20, ademas de arrojarme un mensaje de bienvenida:

Private Sub Workbook_Open()

Hoja1.Activate
Range("A20").Select
Dim txt As String
txt = "Bienvenido" & vbCrLf _
& "Gracias por utilizar esta aplicación."
MsgBox txt, vbInformation, "Bienvenidos..."

End Sub

Asimismo, en la Hoja1 (Portada) tengo las siguientes líneas para limitar el área de trabajo de la celda A1 a la celda Z40:

Private Sub Worksheet_Activate()
Me.ScrollArea = "A1:Z40"
End Sub

El problema que tengo es que, pese a que le he dado la instrucción a Excel de activar la Hoja1 al abrir el libro (y, por ende, esperaría que en automático limite el área de trabajo de la misma hoja), no surte efecto la macro para limitar el área de trabajo alojada en ella (como si no se activara la Hoja1 y tal vez sólo se seleccionara) sino hasta que cambio de hoja y después regreso a la Hoja1 es cuando realmente se limita el área de trabajo.

Evidentemente podría cambiar de evento la instrucción de limitar el área de trabajo y podría funcionarme:

Private Sub Worksheet_Calculate()
Me.ScrollArea = "A1:Z40"
End Sub

pero entonces tendría que agregar en una celda alguna fórmula que constantemente estuviera calculando algún resultado (=AHORA(), por ejemplo), pero se estaría volviendo más laborioso y con datos innecesarios mi archivo, por lo que no lo veo viable.

Lo que se me ocurre pero no sé hacerlo, es integrar la macro (como líneas de comando y no por medio de un Call) alojada en la Hoja1 dentro del ThisWorkbook para que cuando abra el libro también ya se haya limitado el área de trabajo... ¿Alguna sugerencia?

Muchísimas gracias por leer mi solicitud y por las sugerencias que puedan brindarme.

1 respuesta

Respuesta
1

Es más simple de lo que imaginas:

Private Sub Workbook_Open()
Sheets("Hoja1").Activate
Range("A20").Select
Sheets("Hoja1").ScrollArea = "A1:Z40"
Dim txt As String
txt = "Bienvenido" & vbCrLf _
& "Gracias por utilizar esta aplicación."
MsgBox txt, vbInformation, "Bienvenidos..."
End Sub

Solo cambiale el nombre por la tuya.

Elsa, te agradezco mucho tu pronta respuesta...! Sólo una última pregunta:

No quisiera arriesgar la operación de la macro en caso de cambiarle el nombre a la Hoja1, es por ello que en lugar de poner Sheets("Hoja1").Activate, suelo poner Hoja1.Activate... ¿Existe alguna desventaja el ponerla como lo hago? Finalmente, la macro que me hiciste favor de corregir ya jalo atendiendo lo anteriormente expuesto, pero me surge la duda de ¿porqué cambiaste Hoja1.Activate (como lo tenía en mi solicitud inicial) por Sheets("Hoja1").Activate?

Nuevamente te agradezco mucho tu tiempo y conocimiento compartido. Salu2

Porque en mi versión no me reconoce esa sintaxis, y luego de probarla copié y pegué mi código ;)

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas