Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1908to1912
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Hyperlink Inhaltsverzeichnis+Auswertung

Hyperlink Inhaltsverzeichnis+Auswertung
06.12.2022 15:45:26
Carl
Hallo Zusammen,
ich habe über ein leicht abgewandeltes Marko aus diesem Forum ein Inhaltsverzeichnis mit Hyperlinks erstellt.
Das Inhaltsverzeichnis wird in der Reihenfolge aufbaut, in der die Tabellenblätter aufgelistet sind.
Nun möchte ich wiederkehrend auf jedem Tabellenblatt Zellen auslesen zusätzlich auf dem Blatt mit ausgeben.
Makro ist wie folgt:

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 = 1 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
'Sortiert das Inhaltsverzeichnis
'Abschnitt reinnehmen für Sortierung alphabetisch
'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
Beispielweise habe ich nun ein Tabellenblatt mit den Daten:
Nachname -> Mustermann (Feld A2)
Name -> Max (Feld B2)
Geburtstag -> 18.02.1998 (Feld C2)
Die Logik wiederholt sich auf allen Tabellenblättern mit den identischen Feldern. Sehr Ihr eine Möglichkeit zusätzlich zu dem Inhaltsverzeichnis mit Hyperlink auch die 3 folgelagerten Daten mit im Inhaltsverzeichnis auszugeben?
Zusätzlich möchte ich keine Formatierungen wie z. B. Schriftgrade oder "Fett" übernehmen.
1000 Dank im Voraus und beste Grüße
Carl

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hyperlink Inhaltsverzeichnis+Auswertung
06.12.2022 16:08:37
Benjamin
Hallo Carl,
ich habe die Kommentarzeilen gelöscht und drei Zeilen ergänzt, die deine Aufgabe lösen sollten.

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 = 1 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
tarWks.Cells(i, 2).value = Worksheets(i).range("A2").value
tarWks.Cells(i, 3).value = Worksheets(i).range("B2").value
tarWks.Cells(i, 4).value = Worksheets(i).range("C2").value
End If
Next i
End Sub
Gruß
Benjamin
Anzeige
AW: Hyperlink Inhaltsverzeichnis+Auswertung
06.12.2022 16:50:50
Carl
Hi Benjamin.
Großartig danke. das Klappt schonmal top. Weißt die wie ich die Auflistung der Tabellenblätter erst in Zelle A2 und nicht direkt bei A1 starte?
Damit meine ich, dass ich z. B. über die ausgegebenen werte noch eine Überschrift ausgeben will, um die Werte besser lesbar in der Auswertung zu haben.
Also A1, B1, C1, D1 sollen für Überschriften sein.
Zusätzlich suche ich noch nach einer Möglichkeit Tabellenblätter die eine bestimmte Bezeichnung habe, wie z. B. "Daten" nicht in die Inhaltsangabe mit aufzunehmen.
so oder so schon einmal echt vielen Dank!! :)
Beste Grüße
Carl
Anzeige
AW: Hyperlink Inhaltsverzeichnis+Auswertung
07.12.2022 08:24:38
Pierre
Hallo Carl,
muss in der ersten Zeile des Inhaltsverzeichnisses dein Blatt "Overview" mit angegeben werden?
Wenn nein, dann kannst du die Zeile

tarWks.Cells(1, 1) = "Overview"
löschen. Und zusätzlich das

For i = 1
auf 2 ändern.
Dann kannst du mit einer weiter "If-Schleife" das Blatt ausschließen, welches nicht im Inhaltverzeichnis autauchen soll:

If Worksheets(i).Name  "Daten" Then
unter der Zeile "For i =" ein zweites "End If" vor "Next i" nicht vergessen.
Wenn das auszuschließende Blatt mitten in der Mappe ist, hättest du jetzt eine unschöne Lücke, welche du ganz laienhaft (von mir) mit einer neuen "For-Next-Schleife" beseitigen kannst:

        For k = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
If IsEmpty(Cells(k, 1)) Then
Cells(k, 1).EntireRow.Delete shift:=xlUp
End If
Next k
Hierfür musst du oben, wo die ganzen "Dim i As Integer" usw. stehen, noch "k As Integer" hinzufügen.
Genug verwirrt? Gut :D
Das wäre zwar nicht so wunderschön programmiert, würde aber funktionieren.
Vielleicht kommt aber Benjamin noch mit einer saubereren Lösung.
Gruß Pierre
Anzeige
AW: Hyperlink Inhaltsverzeichnis+Auswertung
07.12.2022 08:57:43
Carl
Guten morgen Pierre,
danke, wieder einen großen Schritt weiter!
Ich spiele gerade damit rum, dass wenn z.B. das Tabellenblatt im Namen den Bestandteil "übersicht" enthält, dass dieses Tabellenblatt nicht aufgelistet werden darf.
z. B., "Übersicht" oder "Tabellenübersicht"
Habe es hiermit versucht: If Worksheets(i).Name Like "*übersicht*" = False Then
Hast du dazu eine Idee, ob man es so in der Art lösen könnte.
Mit deinem Workaround klappt es ansonsten schon mal deutlich besser :)
Danke und liebe Grüße
Carl
AW: Hyperlink Inhaltsverzeichnis+Auswertung
07.12.2022 09:42:32
Pierre
Hallo Carl,
auch wieder laienhaft auf die Schnelle:
statt

If Worksheets(i).Name  "Daten" Then
nimmst du in diesem Falle

If InStr(Worksheets(i).Name, "Übersicht") Then GoTo Überspringen:
Und zusätzlich schreibst du über das "Next i" bitte einfach "Überspringen:" (Doppelpunkt nicht vergessen).
Das klappt zumindest bei mir.
Übrigens: Mit Application.ScreenUpdating = False unter Sub und = True vor End Sub arbeiten in dem Fall, sonst flackert bei mir der Bildschirm.
Gruß Pierre
Anzeige
was vergessen:
07.12.2022 09:43:47
Pierre
Eins der beiden "End If" muss dann auch wieder weg.
AW: Hyperlink Inhaltsverzeichnis+Auswertung
07.12.2022 14:33:19
Carl
Klasse vielen Dank, das klappt! :)
bitteschön (owT)
07.12.2022 15:11:35
Pierre
AW: Hyperlink Inhaltsverzeichnis+Auswertung
07.12.2022 09:23:40
Steffen
Ja, Sie können das Inhaltsverzeichnis erweitern, um die gewünschten Daten aus den Zellen auf jedem Tabellenblatt anzuzeigen. Sie können zum Beispiel eine Schleife verwenden, um durch die Tabellenblätter zu iterieren, und dann die gewünschten Zellen auslesen und im Inhaltsverzeichnis ausgeben.
Hier ist ein Beispiel, wie Sie Ihren Code erweitern könnten, um die gewünschten Daten auszugeben:
Copy code

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
'Iterieren Sie durch die Tabellenblätter
For i = 1 To Worksheets.Count
If Worksheets(i).Visible Then
'Auslesen der gewünschten Zellen und Ausgabe im Inhaltsverzeichnis
tarWks.Cells(i, 1) = Worksheets(i).Name & " | " & Worksheets(i).Range("A2").Value & " | " & Worksheets(i).Range("B2").Value & " | " & Worksheets(i).Range("C2").Value
Cells(i, 1).Hyperlinks.Add Anchor:=Cells(i, 1), Address:="", SubAddress:="'" & Worksheets(i).Name & "'!A1", TextToDisplay:=Worksheets(i).Name
End If
Next i
'Sortieren des Inhaltsverzeichnisses
'Abschnitt reinnehmen für Sortierung alphabetisch
'tarWks.Columns(1).Sort Key1:=tarWks.Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
'    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
'    DataOption1:=xlSortNormal
End Sub
In diesem Beispiel werden im Inhaltsverzeichnis nicht nur der Name des Tabellenblatts, sondern auch die Werte der Zellen A2, B2 und C2 auf jedem Tabellenblatt ausgegeben. Die Werte werden durch | getrennt, damit sie im Inhaltsverzeichnis gut lesbar sind. Beachten Sie, dass Sie die Zellen, die ausgelesen
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige