Visualización de las mismas celdas en distintas hojas de trabajo (Microsoft Excel)
Cuando usa varias hojas de trabajo, Chris se pregunta si hay una manera de «bloquear» el desplazamiento a través de todas las hojas de trabajo. Por ejemplo, si se desplaza hacia abajo y hacia abajo en Sheet1 hasta que las filas 100 a 140 y las columnas G a P estén a la vista, cuando cambie a Sheet2 (o cualquier otra hoja de trabajo) le gustaría que se mostraran las mismas filas y columnas en esas hojas de trabajo.
La única forma de realizar esta tarea es mediante el uso de macros. Lo que tiene que suceder es que la macro necesita determinar qué filas y columnas son visibles cuando una hoja está desactivada (quedando) y luego configurar la visualización de la hoja activada (la que está yendo) a las mismas filas y columnas. Las siguientes macros, agregadas al módulo ThisWorkbook, realizan exactamente esta tarea.
Dim grngSelection As Range Dim gintScrollColumn As Integer Dim glngScrollRow As Long Private Sub Workbook_SheetActivate(ByVal Sh As Object) If TypeName(ActiveSheet) = "Worksheet" Then On Error Resume Next With ActiveWindow Sh.Range(grngSelection.Address).Select .ScrollColumn = gintScrollColumn .ScrollRow = glngScrollRow End With End If End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object) Dim oSheet As Object If TypeName(Sh) = "Worksheet" Then Set oSheet = ActiveSheet Application.EnableEvents = False Sh.Activate With ActiveWindow gintScrollColumn = .ScrollColumn glngScrollRow = .ScrollRow Set grngSelection = .RangeSelection End With oSheet.Activate Application.EnableEvents = True End If End Sub
Tenga en cuenta el uso de las variables fuera de los controladores de eventos. Estas variables se utilizan para pasar los valores de la columna, fila y área seleccionada del controlador SheetDeactivate al controlador SheetActivate.
Por supuesto, es posible que no desee una solución automática. En su lugar, es posible que desee que el usuario realice un paso específico para activar si las hojas de trabajo están sincronizadas. Esto se puede hacer agregando la siguiente macro a un módulo regular en su libro de trabajo:
Global WindowScrollRow Global WindowScrollCol Global WindowSyncOn As Boolean Public Sub WindowLock() If Not WindowSyncOn Then WindowScrollRow = ActiveWindow.VisibleRange.Row WindowScrollCol = ActiveWindow.VisibleRange.Column Application.StatusBar = "WindowSync: ON" Else Application.StatusBar = "" End If WindowSyncOn = Not WindowSyncOn End Sub
Todo lo que hace esta macro es verificar el estado de la variable global WindowSyncOn. Si el valor es Falso, la configuración actual para la fila superior visible y la columna visible más a la izquierda se almacenan en variables globales. La configuración de estas variables es utilizada por el siguiente controlador de eventos, agregado al módulo ThisWorkbook:
Private Sub Workbook_SheetActivate(ByVal Sh As Object) If WindowSyncOn Then If Not ActiveWindow Is Nothing Then ActiveWindow.ScrollRow = WindowScrollRow ActiveWindow.ScrollColumn = WindowScrollCol End If End If End Sub
La macro simplemente verifica la configuración de la variable WindowSyncOn, y si es Verdadero (se ha establecido), entonces la macro establece qué fila y columna están en la parte superior e izquierda de la ventana activa.
_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 (3860) se aplica a Microsoft Excel 97, 2000, 2002 y 2003.