Wartung der aktiven Zelle (Microsoft Excel)
Eine Excel-Arbeitsmappe kann beliebig viele einzelne Arbeitsblätter enthalten. Während Sie sich in den verschiedenen Arbeitsblättern bewegen, verfolgt Excel, welche Zelle in welchem Arbeitsblatt ausgewählt ist. Wenn Sie zu einem neuen Arbeitsblatt wechseln, aktiviert Excel die Zelle, die zuletzt in diesem Arbeitsblatt aktiv war. Wenn Sie also zuletzt die Zelle F9 im Arbeitsblatt ausgewählt haben, wird diese ausgewählt, wenn Sie das Arbeitsblatt erneut anzeigen, unabhängig davon, was im vorherigen Arbeitsblatt ausgewählt wurde.
Bei einigen Arbeitsmappen möchten Sie jedoch möglicherweise, dass Excel die aktive Zelle im ausgewählten Arbeitsblatt mit der aktiven Zelle im vorherigen Arbeitsblatt identisch macht. In Excel gibt es keine automatische Einstellung, aber Sie können einige Dinge ausprobieren. Eine Sache ist, diese Schritte zu befolgen:
-
Halten Sie die Strg-Taste gedrückt, während Sie auf die Registerkarte des Arbeitsblatts klicken, zu dem Sie wechseln möchten. Es sollten nun zwei Arbeitsblattregisterkarten ausgewählt werden. Der mit dem fetten Namen wird tatsächlich auf dem Bildschirm angezeigt.
-
Klicken Sie auf die Registerkarte für das Arbeitsblatt, zu dem Sie wechseln möchten. Beide Registerkarten sollten weiterhin ausgewählt sein, aber nur die Registerkarte, auf die Sie geklickt haben, sollte fett gedruckt sein.
-
Halten Sie die Strg-Taste gedrückt, während Sie auf die Registerkarte des gerade verlassenen Arbeitsblatts klicken.
Diese Schritte funktionieren, weil Sie Arbeitsblätter „gruppieren“. Wenn Sie dies tun, werden die ausgewählten Zellen in Excel für alle Arbeitsblätter in der Gruppe gleich.
Das Verwenden der Strg-Klick-Klick-Strg-Sequenz kann bestenfalls umständlich sein. Es ist auch eine Sequenz, die mit Gefahren behaftet sein kann, denn wenn Sie Schritt 3 vergessen, können Sie unbeabsichtigte Änderungen an Ihren Arbeitsblättern vornehmen. (Während Sie mit gruppierten Arbeitsblättern arbeiten, werden alle Änderungen, die Sie an einem Blatt vornehmen, auf alle Blätter in der Gruppe auf ähnliche Weise geändert.)
Diese drei Schritte können mit Makros nicht automatisiert werden. Sie können jedoch mit einem Makro einen anderen Ansatz wählen, um dieselbe Aufgabe auszuführen. Das erste, was Sie tun müssen, ist, eine öffentliche Variable an einer beliebigen Stelle innerhalb eines Moduls der Arbeitsmappe zu deklarieren, wie hier gezeigt:
Public sAddress As String
Diese Variable, sAddress, wird verwendet, um die aktuelle Adresse der aktiven Zelle zu speichern. Fügen Sie im Modul „ThisWorkbook“ der Arbeitsmappe diese beiden Makros hinzu:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _ ByVal Target As Excel.Range) sAddress = ActiveCell.Address End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object) On Error Resume Next If sAddress > "" Then Sh.Range(sAddress).Select End Sub
Das erste Makro wird von Excel automatisch ausgeführt, sobald sich die ausgewählte Zelle ändert. Sie müssen lediglich die Adresse der jeweils aktiven Zelle abrufen und diese Adresse in der Variablen sAddress speichern.
Das zweite Makro wird automatisch ausgeführt, wenn eine Arbeitsmappe aktiviert wird.
Es wird überprüft, ob in sAddress etwas gespeichert ist. Wenn dies der Fall ist, wird die dort gespeicherte Zellenadresse ausgewählt. Der Fehlercode ist erforderlich, wenn Sie ein Blatt auswählen, das keine Zellen verwendet, z. B. ein Diagrammblatt.
Dieser Makroansatz funktioniert hervorragend, wenn Sie diese Navigationsänderung nur in einer oder zwei Arbeitsmappen vornehmen möchten. Wenn Sie die Änderung lieber „systemweit“ (sozusagen) vornehmen möchten, müssen Sie bei der Herangehensweise an das Makro etwas komplexer sein. In diesem Fall müssen Sie Ihren Code in die Arbeitsmappe Personal.xls einfügen, damit er bei jedem Start von Excel geladen wird. Fügen Sie insbesondere den folgenden Code in ein neues Klassenmodul der Personal.xls-Arbeitsmappe ein. Dieses Klassenmodul sollte einen beschreibenden Namen haben, z. B. ClassXLApp:
Public WithEvents gobjXLApp As Excel.Application Private mstrAddress As String Private Sub gobjXLApp_WorkbookActivate(ByVal Wb As Excel.Workbook) On Error Resume Next If mstrAddress > "" Then ActiveSheet.Range(mstrAddress).Select End Sub Private Sub gobjXLApp_SheetActivate(ByVal Sh As Object) On Error Resume Next If mstrAddress > "" Then Sh.Range(mstrAddress).Select End Sub Private Sub gobjXLApp_SheetSelectionChange(ByVal Sh As Object, _ ByVal Target As Excel.Range) mstrAddress = Selection.Address End Sub
Öffnen Sie als Nächstes das Modul „ThisWorkbook“ von Personal.xls und kopieren Sie den folgenden Code:
Private mobjXLApp As New ClassXLApp Private Sub Workbook_Open() Set mobjXLApp.gobjXLApp = Excel.Application End Sub
Sobald Sie Personal.xls gespeichert und Excel neu gestartet haben, wird der Bereich in der ersten geöffneten Arbeitsmappe im nächsten ausgewählten Arbeitsblatt ausgewählt.
_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 (3205) gilt für Microsoft Excel 97, 2000, 2002 und 2003. Eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Excel (Excel 2007 und höher) finden Sie hier: