Navigieren Sie mit dem VBA-Makro durch Excel-Tabellen

Hintergrund

Für Excel-Benutzer, die mit einer Vielzahl von Arbeitsmappen und einer besonders großen Anzahl von Arbeitsblättern umgehen müssen, kann die Navigation durch die Datenflut eine einschüchternde und zeitaufwändige Aufgabe sein
Stellen Sie sich folgendes Szenario vor: Sie arbeiten an einer Arbeitsmappe mit 30 oder mehr unsortierten Blättern. Während Sie gewissenhaft durch diese Blätter wühlen und nach bestimmten Zelleneinträgen suchen, um Ihre Aufgaben zu erledigen, passiert es allzu häufig, dass Sie zufällig von Blatt zu Blatt springen. Die eigentliche Herausforderung entsteht jedoch, wenn Sie auf einen Fehler stoßen und sich durch das Labyrinth der zuvor besuchten Arbeitsblätter gehen müssen. In solchen Situationen kann es frustrierend ineffizient sein, entweder sich nicht genau an das entsprechende Blatt zu erinnern oder den mühsamen Vorgang mehrfachen Klickens. Dieser Artikel zeigt Ihnen eine Lösung für dieses Dilemma, indem Sie VBA (Visual Basic for Applications) nutzen, um Ihr Excel zu optimieren und Ihre Produktivität zu steigern.

Was wollen wir erreichen?

Der Benutzer kann durch alle besuchten Arbeitsblätter navigieren, indem er entweder STRG + UMSCHALT + Q (Vorherige Blätter) oder STRG + UMSCHALT + E (Nächste Blätter) drückt. Natürlich kann der Benutzer diese Tastenkombinationen nach Belieben ändern, um sie an seine Vorlieben anzupassen. Aus Gründen der Konsistenz wird sich der Rest des Artikels jedoch auf diese Tastenkombinationen beziehen.
Beispiel:
Der Benutzer öffnet eine Arbeitsmappe und wählt dann die folgenden Blätter aus: Tabelle1 -> Tabelle4 -> Tabelle3 -> Tabelle4 -> Tabelle7 -> Tabelle2 -> *Tabelle6
Im obigen Beispiel ist das aktuelle aktive Blatt, an dem der Benutzer arbeitet, Tabelle6. Zu Illustrationszwecken ist dieses genannte Blatt fett gedruckt und mit einem (*) markiert.
Hier ist eine beispielhafte Simulation des erwarteten Verhaltens, wenn der Benutzer die Makros nacheinander verwendet:

  1. Beim ersten Drücken von STRG + UMSCHALT + Q wird das vorherige Blatt Tabelle2 ausgewählt. Tabelle1 -> Tabelle4 -> Tabelle3 -> Tabelle4 -> Tabelle7 -> *Tabelle2 -> Tabelle6
  2. Beim zweiten Drücken von STRG + UMSCHALT + Q wird das vorherige Blatt Tabelle7 ausgewählt. Tabelle1 -> Tabelle4 -> Tabelle3 -> Tabelle4 -> *Tabelle7 -> Tabelle2 -> Tabelle6
  3. Beim dritten Drücken von STRG + UMSCHALT + Q wird das vorherige Blatt Tabelle4 ausgewählt. Tabelle1 -> Tabelle4 -> Tabelle3 -> *Tabelle4 -> Tabelle7 -> Tabelle2 -> Tabelle6
  4. Beim ersten Drücken von STRG + UMSCHALT + E wird das nächste Blatt Tabelle7 ausgewählt. Tabelle1 -> Tabelle4 -> Tabelle3 -> Tabelle4 -> *Tabelle7 -> Tabelle2 -> Tabelle6
  5. Beim zweiten Drücken von STRG + UMSCHALT + E wird das nächste Blatt Tabelle2 ausgewählt. Tabelle1 -> Tabelle4 -> Tabelle3 -> Tabelle4 -> Tabelle7 -> *Tabelle2 -> Tabelle6

Mit diesem Ansatz kann der Benutzer problemlos nur durch die relevanten Blätter navigieren, an denen er/sie gearbeitet hat, und dabei viel Zeit und Mühe sparen.

Makro schreiben

1. Öffnen Sie den VBA-Editor, indem Sie Alt + F11 drücken.
2. Klicken Sie im Projektfenster, das links im Editor angedockt ist, mit der rechten Maustaste auf den Ordner „Modul“.
3. Wählen Sie „Einfügen“ -> „Modul“. Ein neues Modul wird innerhalb des Modulordners erstellt. Sie können dieses Modul optional über die Eigenschaft „(Name)“ im Projektfenster umbenennen.


4. Doppelklicken Sie auf dieses neue Modul und fügen Sie den folgenden Code in das Hauptfenster ein.

Option Explicit
Option Private Module
Public arrBlatt() As String
Public i As Integer, ptr As Integer
Public Sub initArrBlatt()
i = 0
addToArr ActiveSheet
End Sub

Public Sub addToArr(ws As Worksheet)
ReDim Preserve arrBlatt(i)
arrBlatt(i) = ws.Name
i = i + 1
ptr = i - 1
End Sub

Public Sub insToArr(ws As Worksheet)
Dim arrCopy As Variant
Dim x As Integer
ReDim Preserve arrBlatt(i)
For x = UBound(arrBlatt) To ptr + 1 Step -1
arrBlatt(x) = arrBlatt(x - 1)
Next x
arrBlatt(ptr + 1) = ws.Name
i = i + 1
ptr = ptr + 1
End Sub

5. Im Projektfenster doppelklicken Sie auf das Modul „DieseArbeitsmappe“ und fügen Sie den folgenden Code in das Hauptfenster ein.

Option Explicit
Private Sub Workbook_Open()
initArrBlatt
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If ptr = i - 1 Then
addToArr Sh         \' ptr is at the end of list
Else
insToArr Sh         \' ptr is at the middle of list
End If
End Sub

Public Sub vorBlatt()
\' Bind to a keyboard shortcut of your choice e.g. CTRL + SHIFT + Q
Application.EnableEvents = False
Dim vor As String
If ptr > 0 Then
ptr = ptr - 1
vor = arrBlatt(ptr)
Worksheets(vor).Activate
End If
Application.EnableEvents = True
End Sub

Public Sub nachBlatt()
\' Bind to a keyboard shortcut of your choice e.g. CTRL + SHIFT + E
Application.EnableEvents = False
Dim nach As String
If ptr < i - 1 Then
ptr = ptr + 1
nach = arrBlatt(ptr)
Worksheets(nach).Activate
End If
Application.EnableEvents = True
End Sub

6. Verlassen Sie den VBA-Editor und gehen Sie zum Register „Entwicklertools in der Excel-Menüleiste. Falls Sie dieses Register nicht sehen können, klicken Sie mit der rechten Maustaste auf die Menüleiste und wählen Sie „Menüband anpassen“ aus. Aktivieren Sie „Entwicklertools“ und stellen Sie sicher, dass es im rechten Bereich der Menüleiste angezeigt wird.

7. Klicken Sie auf „Makros“ -> wählen Sie das entsprechende Makro (Vorblatt oder Nachblatt) -> Optionen.

8. Klicken Sie auf das kleine Textfeld im Feld „Tastenkombination“ und geben Sie dort die gewünschten Tastenkombinationen ein (CTRL + SHIFT + Q und CTRL + SHIFT + E für dieses spezielle Beispiel im Artikel). Klicken Sie auf OK.

Jetzt sind Sie fertig und sollten bereit sein! Gehen Sie nun voran, verwenden Sie diese Tastenkombinationen und genießen Sie den kleinen Produktivitätsschub, den diese Lösung bietet.

Benötigen Sie einen VBA Programmierer?

Wir als exact construct programmieren mit einem Team von rd. 20 Mitarbeitern seit über 10 Jahren Excel-Tools. Wir sind ein Nischenanbieter der spezialisiert auf Makros/VBA-Codes ist. Daneben unterstützen wir auch als 3rd Level Support die IT-Abteilungen rund um Probleme bei MS Office (Excel, Word, PowerPoint, etc.).
Haben Sie ein Excel-Problem? Benötigen Sie einen Makro-Programmierer? Rufen Sie uns unverbindlich an +41 52 511 05 25 oder kontaktieren Sie uns via Kontaktformular.

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen