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.

ist absolut technik-begeistert und großer Fan von Linux und Open Source. Raspberry Pi Bastler der ersten Stunde und nach wie vor begeistert von dem kleinen Stück Hardware, auf dem er tolle Projekte umsetzt. Teilt hier seine Erfahrungen mit Nextcloud, Pi-hole, YubiKey, Synology und openmediavault und anderen spannenden IT-Themen. Nutzt Markdown und LaTeX zum Dokumentieren seiner Projekte und Gitea zum Versionieren. Sitzt vor einem 49“ Monitor, nutzt Windows und MacOS zum Arbeiten, Linux auf seinen Servern und virtuellen Maschinen und hört dabei Spotify und MP3s und Radio-Streams über seinen RadioPi.
Guten Tag,vielleicht können Sie mir Helfen.Sub Auto_Open()kommt die Meldung. „Sub oder Funktion nicht definiert“mfG Norbert Jacobs
Hallo Norbert,
hast du das Makro wie hier beschrieben erstellt?
http://strobelstefan.org/?p=1185