Bev tiene una hoja de trabajo con dos filas de encabezado que están congeladas y una columna que está congelada. Luego, puede desplazarse por la página agregando datos semana a semana. Los nombres y subtotales se fijan a la izquierda, las fechas de la semana en la parte superior. Por encima de todo esto, en la primera fila congelada, Bev tiene un bonito título elegante que describe el libro de trabajo. Está buscando una manera de hacer que su título (el de la primera fila) «flote» para que cuando se desplace por la página, el título no desaparezca del borde de la hoja de trabajo visible.

La forma más sencilla de hacerlo es asegurarse de que el título esté en la celda A1.

Dado que tiene una columna y dos filas congeladas, a medida que se desplaza a la celda derecha, A1, que contiene el título, siempre estará visible en la pantalla. (Esto solo funciona satisfactoriamente si todo el título cabe en la celda A1, sin «extenderse» a la celda B1 o más allá.)

Si quieres algo un poco más elegante con tu título, entonces necesitas trabajar un poco con los cuadros de texto y las macros. Si coloca el título en un cuadro de texto ubicado en la primera fila, puede usar algunas macros para asegurarse de que el cuadro de texto siempre esté centrado en la pantalla en esa fila.

Supongamos, por el bien de este ejemplo, que el cuadro de texto que contiene el título se llama «TitleTextBox». A medida que se desplaza hacia la izquierda y hacia la derecha en la hoja de trabajo, una macro podría verificar automáticamente para asegurarse de que el borde izquierdo del cuadro de texto sea siempre igual al borde izquierdo del área de pantalla visible. El siguiente código debe agregarse al código de la hoja de trabajo para la hoja de trabajo que contiene el cuadro de texto:

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)

Me.Shapes("TitleTextBox").Left = ActiveWindow.VisibleRange.Left End Sub

Esta macro, debido a que es parte del código de la hoja de trabajo, se ejecutará cada vez que se cambie la selección en la hoja de trabajo. Por lo tanto, cuando use las teclas de flecha para moverse hacia la izquierda o hacia la derecha, use las teclas de tabulación o seleccione una celda con el mouse, la macro se ejecutará y se asegurará de que los bordes izquierdos del cuadro de texto y el área visible siempre coincidan.

Cuando esta macro no se activa es cuando se desplaza hacia la izquierda y hacia la derecha utilizando la barra de desplazamiento horizontal en la parte inferior de la pantalla. No hay ningún «evento de desplazamiento» que se active automáticamente cuando se utilizan las barras de desplazamiento. Hasta que se realice una selección en algún lugar dentro del nuevo rango visible, lo que desencadenará el evento SelectionChange, la ubicación del cuadro de texto no se moverá.

La única solución a esta limitación es utilizar las capacidades del temporizador de Visual Basic para actualizar el cuadro de texto periódicamente. El siguiente código lo hace cada segundo, pero puede ajustarlo para que se ejecute con menos frecuencia, si lo desea.

Este código se agrega a un módulo VBA normal:

Sub UpdateTB()

If ActiveSheet.Name = "Sheet1" Then         ActiveSheet.Shapes("TitleTextBox").Left = _           ActiveWindow.VisibleRange.Left     End If     Application.OnTime Now + TimeSerial(0, 0, 1), "UpdateTB"

End Sub

Y esto se agrega al objeto del libro de trabajo para iniciar el temporizador cuando el libro de trabajo se abre por primera vez:

Private Sub Workbook_Open()

UpdateTB End Sub

Si usa el enfoque basado en temporizador para colocar el cuadro de texto, no necesitará usar el que está vinculado al evento SelectionChange. La versión con temporizador simplemente ajusta el título después de cada intervalo.

Hay una «desventaja» adicional de cualquier técnica basada en macros además de la lentitud introducida por la ejecución del código: cada vez que el código se ejecuta, borra la «pila de deshacer». Esto significa que no podrá «deshacer» los cambios que realice en el libro de trabajo si es necesario.

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (10260) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365. Puede encontrar una versión de este consejo para la interfaz de menú anterior de Excel aquí:

link: / excel-Floating_Information_in_a_Frozen_Row [Información flotante en una fila congelada].