Navigation via ListBox in einer Excel Arbeitsmappe

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.

ListBox einfügen
ListBox einfügen

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
Navigation innerhalb einer Excel Arbeitsmappe
Navigation innerhalb einer Excel Arbeitsmappe

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.

Code für Navigationsfeld
Code für Navigationsfeld

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

Module erstellen
Module erstellen

Das Ergebnis

Das Ergebnis sollte so ähnlich aussehen wie hier:

Navigation für Excel Arbeitsmappe
Navigation für Excel Arbeitsmappe

Die erstellten Buttons in Tabelle 1 verfügen noch über keine Funktion. Dafür müssen die Makros noch zugewiesen werden.

Buttons - Makro zuweisen
Buttons – Makro zuweisen

2 Antworten auf „Navigation via ListBox in einer Excel Arbeitsmappe“

  1. Guten Tag,vielleicht können Sie mir Helfen.Sub Auto_Open()kommt die Meldung.  „Sub oder Funktion nicht definiert“mfG Norbert Jacobs

Schreibe einen Kommentar

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