Excel – Registernamen per VBA auslesen

Der folgende Code listet die Namen sämtlicher Blätter, Tabellenblätter und Diagrammblätter in den Direktbereich des VBA-Editors. Mit Ansicht – Direktfenster bzw. STRG + G innerhalb des VBA-Editors kann man den Direktbereich einschalten.

Statt dessen hätte man die Namen der Register natürlich auch in ein Tabellenblatt eintragen können.

427

Statt ThisWorkbook hätte ich auch ActiveWorkbook wählen können. ThisWorkbook bezeichnet die Datei, in der sich das Makro befindet. ActiveWorkbook ist die gerade aktive Datei.


Option Explicit
Sub Seitennamen()
Dim lngSheets As Long 'Sheets sind alle Register
Dim lngWorksheets As Long 'Worksheets sind nur Tabellenblätter
Dim lngCharts As Long 'Charts sind nur die Diagrammblätter
Dim i As Long
lngSheets = ThisWorkbook.Sheets.Count
lngWorksheets = ThisWorkbook.Worksheets.Count
lngCharts = ThisWorkbook.Charts.Count

debug.print "Alle Register"
For i = 1 To lngSheets
Debug.Print ThisWorkbook.Sheets(i).Name
Next i

debug.print "Alle Tabellenblätter"
For i = 1 To lngWorksheets
Debug.Print ThisWorkbook.Worksheets(i).Name
Next i

debug.print "Alle Diagrammblätter"
For i = 1 To lngCharts
Debug.Print ThisWorkbook.Charts(i).Name
Next i
End Sub

Hier ist die zweite Variante des Codes mit Ausgabe im Tabellenblatt:

Option Explicit

Sub Seitennamen()
Dim lngSheets As Long 'Sheets sind alle Register
Dim lngWorksheets As Long 'Worksheets sind nur Tabellenblätter
Dim lngCharts As Long 'Charts sind nur die Diagrammblätter
Dim i As Long

lngSheets = ThisWorkbook.Sheets.Count
lngWorksheets = ThisWorkbook.Worksheets.Count
lngCharts = ThisWorkbook.Charts.Count

For i = 1 To lngSheets
ThisWorkbook.Sheets("Überblicksblatt").Cells(1 + i, 1).Value = ThisWorkbook.Sheets(i).Name
Next i

For i = 1 To lngWorksheets
ThisWorkbook.Sheets("Überblicksblatt").Cells(1 + i, 2).Value = ThisWorkbook.Worksheets(i).Name
Next i

For i = 1 To lngCharts
ThisWorkbook.Sheets("Überblicksblatt").Cells(1 + i, 3).Value = ThisWorkbook.Charts(i).Name
Next i

End Sub

Und hier ist das Video:

2 Kommentare

  1. Oli

    Hallo und vielen Dank schon mal für die tolle Videos,
    ich habe eine Frage! Wenn man nach dem Ausführen dieses Makros eine Registerkarte löscht und den Makro wieder ausführt verschwindet den Namen des Makros nicht aus der Übersicht. Haben Sie da die Lösung?

    Danke
    Oli

  2. Andreas

    Hallo, hier wäre denkbar bevor die For-Schleife startet das Blatt leer zu machen
    ThisWorkbook.Sheets(„Überblicksblatt“).Cells.clearcontents