VBA Inhaltsverzeichnis o. ausg. T-Blatt
16.11.2022 13:36:53
Carl
Moin Zusammen,
ich hoffe es geht Euch gut :)
Ich möchte gerne ein aktuelles Inhaltsverzeichnis in einem Tabellenblatt via Button erstellen. Wichtig ist, dass die ausgeblendeten Tabellenblätter nicht mit aufgelistet werden.
Das Makro, welches ich aktuell verwende ist (auch aus dem Forum):
Sub CommandButton1_Click()
'Erstellt ein Inhaltsverzeichnis auf alle Tabellen einer
'Mappe mit Hyperlinks auf die jeweiligen Tabellen
Dim tarWks As Worksheet
Dim i As Integer, myRow As Integer, tmpCnt As Integer
'Blattnamen anpassen
Set tarWks = Worksheets("Overview")
'Bestehenden Inhalt löschen
tarWks.Columns(1).ClearContents
tarWks.Cells(1, 1) = "Overview"
'Erstellen des Inhaltsverzeichnisses
'Vertikal
For i = 2 To Worksheets.Count
tarWks.Cells(i, 1) = Worksheets(i).Name
Cells(i, 1).Hyperlinks.Add Anchor:=Cells(i, 1), Address:="", SubAddress:="'" & Worksheets(i).Name & "'!A1", TextToDisplay:=Worksheets(i).Name
Next i
'Sortiert das Inhaltsverzeichnis
tarWks.Columns(1).Sort Key1:=tarWks.Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
'Horizontal
'tmpCnt = 1
'myRow = 1
'For i = 1 To Worksheets.Count
' If i Mod 256 = 0 Then
' tmpCnt = 1
' myRow = myRow + 1
' End If
' If Worksheets(i).Name <> tarwks.Name Then
' tarwks.Cells(myRow, tmpCnt) = Worksheets(i).Name
' Cells(myRow, tmpCnt).Hyperlinks.Add Anchor:=Cells(myRow, tmpCnt), Address:="", SubAddress:="'" & Worksheets(i).Name & "'!A1", TextToDisplay:=Worksheets(i).Name
' tmpCnt = tmpCnt + 1
' End If
'Next i
End Sub
Hat jemand einen Tip, wie ich das Makro so erweitern kann, dass ausgeblendete Tabellenblätter "ignoriert" werden?Danke und beste Grüße
Carl
Betrifft: AW: VBA Inhaltsverzeichnis o. ausg. T-Blatt
Hallo Carl,
probiers mal damit:
Option Explicit
Sub TabellenNamenAuflisten() '* ohne ausgeblendete
Dim blatt As Worksheet, arrNamen, lCount&, lSheetsCount&
lSheetsCount = Sheets.Count
arrNamen = Range("A1:A" & lSheetsCount)
For Each blatt In ActiveWorkbook.Worksheets
If blatt.Visible = True Then
lCount = lCount + 1
arrNamen(lCount, 1) = blatt.Name
End If
Next blatt
Range("A1:A" & lSheetsCount) = arrNamen
End Sub
ServusBetrifft: AW: VBA Inhaltsverzeichnis o. ausg. T-Blatt
Hallo Carl,
Sub CommandButton1_Click()
'Erstellt ein Inhaltsverzeichnis auf alle Tabellen einer
'Mappe mit Hyperlinks auf die jeweiligen Tabellen
Dim ws As Worksheet
Dim Z As Range
With Worksheets("Overview")
.Columns(1).ClearContents 'Bestehenden Inhalt löschen
.Cells(1, 1) = "Overview"
For Each ws In Worksheets
If ws.Name <> .Name Then
If ws.Visible Then
Set Z = ws.Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0)
Z.Value = ws.Name
Z.Hyperlinks.Add Anchor:=Z, Address:="", SubAddress:="'" & ws.Name & "'!A1", TextToDisplay:=ws.Name
End If
End If
Next
'Sortiert das Inhaltsverzeichnis
.Columns(1).Sort Key1:=.Range("A1"), Order1:=xlAscending
End With
End Sub
Betrifft: AW: VBA Inhaltsverzeichnis o. ausg. T-Blatt
Großartig danke Yal!!
Hast du evtl. auch eine Idee, wie man noch den Zusatz reinkriegt, dass die Tabellenblätter in der Reihenfolge gelistet werden wie sie in Excel auftauchen anstatt in alphabetischer Reihenfolge?
Danke und liebe Grüße
Carl
Betrifft: AW: VBA Inhaltsverzeichnis o. ausg. T-Blatt
Hallo,
'Vertikal
For i = 2 To Worksheets.Count
If worksheets(i).visible then
tarWks.Cells(i, 1) = Worksheets(i).Name
Cells(i, 1).Hyperlinks.Add Anchor:=Cells(i, 1), Address:="", SubAddress:="'" & Worksheets(i).Name & "'!A1", TextToDisplay:=Worksheets(i).Name
end if
Next i
GrußRudi
Betrifft: AW: VBA Inhaltsverzeichnis o. ausg. T-Blatt
Genial Rudi, vielen Dank, funktioniert genau so wie ich es wollte - Danke !!
hast du auch noch einen tip, wie ich die Tabellenblätter in der Reihenfolge im Inhaltsverzeichnis gelistet kriege, wie sie bei mir in der Excel auftauchen?
Aktuell listet mir das Makro die Tabellenblätter alphabetisch.
Danke und liebe Grüße
Carl
Betrifft: AW: VBA Inhaltsverzeichnis o. ausg. T-Blatt
indem du
'Sortiert das Inhaltsverzeichnis
tarWks.Columns(1).Sort Key1:=tarWks.Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
löschst oder auskommentierst.Gruß
Rudi
Betrifft: AW: VBA Inhaltsverzeichnis o. ausg. T-Blatt
vielen Dank ! Echt großartig :) Klappt alle! Liebe Grüße Carl