Anzeigen derselben Zellen auf verschiedenen Arbeitsblättern (Microsoft Excel)
Wenn Chris mehrere Arbeitsblätter verwendet, fragt er sich, ob es eine Möglichkeit gibt, das Scrollen durch alle Arbeitsblätter zu sperren. Wenn er beispielsweise auf Blatt 1 nach unten und unten blättert, bis die Zeilen 100 bis 140 und die Spalten G bis P angezeigt werden, möchte er beim Wechsel zu Blatt 2 (oder einem anderen Arbeitsblatt), dass dieselben Zeilen und Spalten auf diesen angezeigt werden Arbeitsblätter.
Die einzige Möglichkeit, diese Aufgabe zu erfüllen, ist die Verwendung von Makros. Was passieren muss, ist, dass das Makro bestimmen muss, welche Zeilen und Spalten sichtbar sind, wenn ein Blatt deaktiviert wird (übrig bleibt), und dann die Anzeige des aktivierten Blattes (dasjenige, das Sie verwenden möchten) auf dieselben Zeilen und Spalten einstellen muss. Die folgenden Makros, die dem ThisWorkbook-Modul hinzugefügt wurden, führen genau diese Aufgabe aus.
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
Beachten Sie die Verwendung der Variablen außerhalb der Ereignishandler. Diese Variablen werden verwendet, um die Werte der Spalte, Zeile und des ausgewählten Bereichs vom SheetDeactivate-Handler an den SheetActivate-Handler zu übergeben.
Natürlich möchten Sie möglicherweise keine automatische Lösung. Stattdessen möchten Sie möglicherweise, dass der Benutzer einen bestimmten Schritt ausführt, um auszulösen, ob die Arbeitsblätter synchronisiert sind. Dies kann durch Hinzufügen des folgenden Makros zu einem regulären Modul in Ihrer Arbeitsmappe erfolgen:
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
Dieses Makro überprüft lediglich den Status der globalen Variablen WindowSyncOn. Wenn der Wert False ist, werden die aktuellen Einstellungen für die oberste sichtbare Zeile und die am weitesten links sichtbare Spalte in globalen Variablen gespeichert. Die Einstellung dieser Variablen wird dann von der folgenden Ereignisbehandlungsroutine verwendet, die dem ThisWorkbook-Modul hinzugefügt wurde:
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
Das Makro überprüft einfach die Einstellung der WindowSyncOn-Variablen. Wenn sie True ist (sie wurde festgelegt), legt das Makro fest, welche Zeile und Spalte sich oben und links im aktiven Fenster befinden.
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (3860) gilt für Microsoft Excel 97, 2000, 2002 und 2003.