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.