Mit Hilfe eines Listenfelds (ListBox) kann man sehr einfach eine Navigation innerhalb einer Excel-Arbeitsmappe erstellen.
Die Navigation soll folgende Funktionen beinhalten
- Bei jedem Öffnen der Arbeitsmappe sol sich die Navigation dynamisch füllen, je nach Anzahl und Benennung der einzelnen Tabs innerhalb der Arbeitsmappe
- Ein Klick auf einen Eintrag setzt den Cursor in das ausgewählte Tabellenblatt.
ListBox in Tabelle einfügen
In unserem Beispiel soll die Navigation in die Tabelle 1 eingefügt werden.
Neben der ListBox könnt ihr gleich noch Buttons erstellen, die für die folgenden Aufgaben zuständig sind
- Befüllen der Navigations, falls der User dies manuell vornehmen möchte
- Löschen der Navigation

Der Code
Nachdem das Layout der Navigation in der Tabelle 1 erstellt wworden ist, gilt es den Code einzufügen.
Alle Elemente haben wir in die Tabelle 1 eingefügt, weshalb wir einen Teil des Codes auch dort reinschreiben werden.

Option Explicit ' Ruft das Makro UserForm_Initialize() auf Sub navigation() Call UserForm_Initialize End Sub ' Befüllt die ListBox Private Sub UserForm_Initialize() Dim sht As Worksheet For Each sht In ActiveWorkbook.Worksheets ListBox1.AddItem sht.Name Next sht End Sub ' Setzt die Einträge in der ListBox als Hyperlink Private Sub ListBox1_Click() Sheets(ListBox1.ListIndex + 1).Activate End Sub ' Löscht die Einträge im Navigationsfeld Sub navigation_loeschen() Sheets("Tabelle1").ListBox1.Clear End Sub
Die Makros UserForm_Initialize und ListBox1_Click befüllen die ListBox und aktivieren die Verlinkung zu den Tabellenblättern. Lässt man das Makro ListBox1_Click weg, wird der Cursor bei einem Klick auf einen Eintrag nicht in das entsprechende Tabellenblatt gesetzt.
Das Makro navigation ruft das Makro UserForm_Initialize auf, das Makro benötigen wird, damit der Button in Tabelle 1 das Navigationsfeld befüllen kann. Private-Makros können hierfür nicht verwendet werden.
Module
In den Modulen definieren wir, dass
- Beim Öffnen der Arbeitsmappe der Navigationsbereich automatisch befüllt wird
- Beim Schließen der Arbeismappe die Einträge im Navigationsbereich gelöscht werden
Für das Befüllen beim Öffnen ist das Modul mod_AutoStart zuständig.
Der Code lautet:
Option Explicit Sub Auto_Open() ' ' Makros starten automatisch, wenn die Excelmappe geöffnet wird ' Call UserForm_Initialize End Sub
Für das automatische Löschen der Einträge wird der Code in das Modul mod_AutoClose geschrieben.
Option Explicit ' Makros werden automatisch ausgeführt, wenn die Arbeitsmappe geschlossen wird Sub auto_close() Call navigation_loeschen End Sub

Das Ergebnis
Das Ergebnis sollte so ähnlich aussehen wie hier:
Die erstellten Buttons in Tabelle 1 verfügen noch über keine Funktion. Dafür müssen die Makros noch zugewiesen werden.