Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Inhaltsverzeichnis mit Seitenzahl

Forumthread: Inhaltsverzeichnis mit Seitenzahl

Inhaltsverzeichnis mit Seitenzahl
20.04.2007 19:50:51
Markus
Hallo,
bin gerade am verzweifeln mit meinem Excel-Problem.
über einen Button auf dem Tabellenblatt Inhalt, lasse ich mir ein Inhaltsverzeichnis
im Tabellenblatt Verzeichnis mit folgenden Code erstellen:

Private Sub cmdErstellen_Click()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim z As Long, ze As Long, zz As Long
Set ws1 = ActiveWorkbook.Worksheets("Inhalt")
Set ws2 = ActiveWorkbook.Worksheets("Verzeichnis")
ze = ws1.Cells(ws1.Rows.Count, 7).End(xlUp).Row
zz = 0
ws2.UsedRange.Clear
For z = 1 To ze
If ws1.Cells(z, 7)  "" And ws1.Cells(z, 9) = "" Then
zz = zz + 1
If ws1.Cells(z, 8)  "" Then
ws2.Cells(zz, 2) = ws1.Cells(z, 7) & "." & ws1.Cells(z, 8)
Else
ws2.Range(ws2.Cells(zz, 1), ws2.Cells(zz, 2)).Merge
ws2.Cells(zz, 1) = ws1.Cells(z, 7)
ws2.Cells(zz, 2).EntireRow.Font.Bold = True
ws2.Cells(zz, 2).EntireRow.Font.Size = 11
ws2.Cells(zz, 2).HorizontalAlignment = xlCenter
End If
ws2.Cells(zz, 3) = ws1.Cells(z, 10)
End If
Next z
End Sub


Zusätzliche möchte ich nun ermitteln, auf welcher Seite sich meine Überschrift im
Tabellenblatt Inhalt befindet.
Habe ein Beispiel zur besseren Veranschaulichung mit angehängt.
https://www.herber.de/bbs/user/41919.xls
Für eine Antwort schon jetzt herzlichen Dank!
Thomas

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Inhaltsverzeichnis mit Seitenzahl
21.04.2007 12:34:12
Daniel
Hallo
probiers mal damit:

Private Sub cmdErstellen_Click()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim z As Long, ze As Long, zz As Long
Dim i As Long
Dim AnzPB As Long
Dim zePB() As Long
Set ws1 = ActiveWorkbook.Worksheets("Inhalt")
Set ws2 = ActiveWorkbook.Worksheets("Verzeichnis")
ze = ws1.Cells(ws1.Rows.Count, 7).End(xlUp).Row
zz = 0
'---- Seitenwechsel ermitteln ---
AnzPB = ws1.HPageBreaks.Count
ReDim zePB(AnzPB)
zePB(0) = 0
If AnzPB > 0 Then
For z = 1 To AnzPB
zePB(z) = ws1.HPageBreaks(z).Location.Row
Next
End If
ws2.UsedRange.Clear
For z = 1 To ze
If ws1.Cells(z, 7)  "" And ws1.Cells(z, 9) = "" Then
zz = zz + 1
If ws1.Cells(z, 8)  "" Then
ws2.Cells(zz, 2) = ws1.Cells(z, 7) & "." & ws1.Cells(z, 8)
'--- Seitenzahl einfügen ---
For i = AnzPB To 0 Step -1
If z > zePB(i) Then
ws2.Cells(zz, 4).Value = i + 1
Exit For
End If
Next
Else
ws2.Range(ws2.Cells(zz, 1), ws2.Cells(zz, 2)).Merge
ws2.Cells(zz, 1) = ws1.Cells(z, 7)
ws2.Cells(zz, 2).EntireRow.Font.Bold = True
ws2.Cells(zz, 2).EntireRow.Font.Size = 11
ws2.Cells(zz, 2).HorizontalAlignment = xlCenter
End If
ws2.Cells(zz, 3) = ws1.Cells(z, 10)
End If
Next z
End Sub


Gruß, Daniel

Anzeige
AW: Inhaltsverzeichnis mit Seitenzahl
22.04.2007 22:03:32
Thomas
Hallo Daniel,
erstmal vorab vielen Dank für deine Antwort!
Der Code funktioniert mit der Beispieldatei sehr gut!
Leider musste ich mein Tabellenblatt Inhalt nun auf meherere Ebenen aufbauen und
so steht jetzt der Aufzählungspunkt (1. Ebene) in einer einer Verbundzelle von G-H und
der Text in Spalte J.
In der zweiten Ebene steht der Aufzählungspunkt in Spalte G und die Nummer in H.
Könntest Du mir evtl. noch einen Tipp zu Deinem angefügten Beispiel geben, wie ich das
noch abändern kann?
https://www.herber.de/bbs/user/41943.xls
Für eine Antwort schon jetzt herzlichen Dank!
Thomas

Anzeige
AW: Inhaltsverzeichnis mit Seitenzahl
22.04.2007 23:29:00
Jan
"Verbundzelle" bzw. verbundene Zellen
sind ein ärgerliches Fehlprodukt, sollte man vermeiden.
mfg Jan

AW: Inhaltsverzeichnis mit Seitenzahl
23.04.2007 06:37:16
Thomas
Guten Morgen Jan,
würde auch am liebsten ohne diese Verbundzelllen arbeiten, jedoch bin ich daran gebunden und so bleibt mir leider nichts anderes übrig.
Gruß,
Thomas

Anzeige
AW: Inhaltsverzeichnis mit Seitenzahl
23.04.2007 22:11:00
Daniel
Hallo
wenn die gemergden Zellen schon mal da sind, kann man sie ja auch gleich benutzten.
ich denke mal, das Ihaltsverzeichnis bezieht sich immer noch nur auf diese drei Hauptpunkte und nicht auf die Unterpunkte.

Private Sub cmdErstellen_Click()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim z As Long, ze As Long, zz As Long
Dim i As Long
Dim AnzPB As Long
Dim zePB() As Long
Set ws1 = ActiveWorkbook.Worksheets("Inhalt")
Set ws2 = ActiveWorkbook.Worksheets("Verzeichnis")
ze = ws1.Cells(ws1.Rows.Count, 7).End(xlUp).Row
zz = 0
'---- Seitenwechsel ermitteln ---
AnzPB = ws1.HPageBreaks.Count
ReDim zePB(AnzPB)
zePB(0) = 0
If AnzPB > 0 Then
For z = 1 To AnzPB
zePB(z) = ws1.HPageBreaks(z).Location.Row
Next
End If
ws2.UsedRange.Clear
For z = 1 To ze
If ws1.Cells(z, 7).MergeArea.Cells.Count > 1 Then
zz = zz + 1
ws2.Cells(zz, 2) = ws1.Cells(z, 7) & "." & ws1.Cells(z, 10)
'--- Seitenzahl einfügen ---
For i = AnzPB To 0 Step -1
If z > zePB(i) Then
ws2.Cells(zz, 4).Value = i + 1
Exit For
End If
Next
End If
'ws2.Cells(zz, 3) = ws1.Cells(z, 10) 'wird das hier benötigt?
Next z
End Sub


Gruß, Daniel

Anzeige
AW: Inhaltsverzeichnis mit Seitenzahl
24.04.2007 00:14:00
Thomas
Hallo Daniel,
vielen Dank für Deine Antwort!
Hab den Code getest und funktioniert auch. Leider benötige ich aber auch die 2. Ebene im Inhaltsverzeichnis, so wie es in diesem Code auch schon funktioniert (nur leider ohne die Seiten):

Private Sub cmdErstellen_Click()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim z As Long, ze As Long, zz As Long
Set ws1 = ActiveWorkbook.Worksheets("Inhalt")
Set ws2 = ActiveWorkbook.Worksheets("Verzeichnis")
ze = ws1.Cells(ws1.Rows.Count, 7).End(xlUp).Row
zz = 0
ws2.UsedRange.Clear
For z = 1 To ze
If ws1.Cells(z, 7)  "" And ws1.Cells(z, 9) = "" Then
zz = zz + 1
If ws1.Cells(z, 8)  "" Then
ws2.Cells(zz, 2) = ws1.Cells(z, 7) & "." & ws1.Cells(z, 8)
Else
ws2.Range(ws2.Cells(zz, 1), ws2.Cells(zz, 2)).Merge
ws2.Cells(zz, 1) = ws1.Cells(z, 7)
ws2.Cells(zz, 2).EntireRow.Font.Bold = True
ws2.Cells(zz, 2).EntireRow.Font.Size = 11
ws2.Cells(zz, 2).HorizontalAlignment = xlCenter
End If
ws2.Cells(zz, 3) = ws1.Cells(z, 10)
End If
Next z
End Sub


Ist es möglich, hier noch die Seiten wie in Deinem Code mit einzufügen?
Gruß & Danke,
Thomas

Anzeige
AW: Inhaltsverzeichnis mit Seitenzahl
25.04.2007 00:52:50
Daniel
Hallo
klar ist das möglich.
das solltest du aber selber hinbekommen.
im prinzip musst du ja nur ein paar Schnipsel aus meinem Code in deinen an der richtigen Stelle einfügen.
versuche mal den Code zu verstehen, dann solltest du kein Problem damit haben.
Gruß, Daniel
;
Anzeige
Anzeige

Infobox / Tutorial

Inhaltsverzeichnis in Excel mit Seitenzahlen erstellen


Schritt-für-Schritt-Anleitung

Um ein Inhaltsverzeichnis mit Seitenzahlen in Excel zu erstellen, kannst Du den folgenden VBA-Code verwenden. Dieser Code geht davon aus, dass Du ein Tabellenblatt mit dem Namen "Inhalt" hast, wo Deine Überschriften stehen, und ein weiteres mit dem Namen "Verzeichnis", wo das Inhaltsverzeichnis erstellt wird.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu (Einfügen > Modul).

  3. Kopiere den folgenden Code und füge ihn in das Modul ein:

    Private Sub cmdErstellen_Click()
       Dim ws1 As Worksheet, ws2 As Worksheet
       Dim z As Long, ze As Long, zz As Long
       Dim i As Long
       Dim AnzPB As Long
       Dim zePB() As Long
       Set ws1 = ActiveWorkbook.Worksheets("Inhalt")
       Set ws2 = ActiveWorkbook.Worksheets("Verzeichnis")
       ze = ws1.Cells(ws1.Rows.Count, 7).End(xlUp).Row
       zz = 0
       '---- Seitenwechsel ermitteln ---
       AnzPB = ws1.HPageBreaks.Count
       ReDim zePB(AnzPB)
       zePB(0) = 0
       If AnzPB > 0 Then
           For z = 1 To AnzPB
               zePB(z) = ws1.HPageBreaks(z).Location.Row
           Next
       End If
       ws2.UsedRange.Clear
       For z = 1 To ze
           If ws1.Cells(z, 7) <> "" And ws1.Cells(z, 9) = "" Then
               zz = zz + 1
               If ws1.Cells(z, 8) <> "" Then
                   ws2.Cells(zz, 2) = ws1.Cells(z, 7) & "." & ws1.Cells(z, 8)
                   '--- Seitenzahl einfügen ---
                   For i = AnzPB To 0 Step -1
                       If z > zePB(i) Then
                           ws2.Cells(zz, 4).Value = i + 1
                           Exit For
                       End If
                   Next
               Else
                   ws2.Range(ws2.Cells(zz, 1), ws2.Cells(zz, 2)).Merge
                   ws2.Cells(zz, 1) = ws1.Cells(z, 7)
                   ws2.Cells(zz, 2).EntireRow.Font.Bold = True
                   ws2.Cells(zz, 2).EntireRow.Font.Size = 11
                   ws2.Cells(zz, 2).HorizontalAlignment = xlCenter
               End If
               ws2.Cells(zz, 3) = ws1.Cells(z, 10)
           End If
       Next z
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Erstelle einen Button auf Deinem Tabellenblatt "Inhalt" und verlinke ihn mit der Funktion cmdErstellen_Click.

Nun solltest Du ein Inhaltsverzeichnis mit Seitenzahlen in Excel generieren können.


Häufige Fehler und Lösungen

  • Fehler: Die Seitenzahlen werden nicht korrekt angezeigt.

    • Lösung: Stelle sicher, dass Du die Seitenumbrüche in Deinem "Inhalt" Tabellenblatt korrekt gesetzt hast. Das Skript ermittelt die Seitenumbrüche und zählt die Seiten entsprechend.
  • Fehler: Der Code funktioniert nicht, wenn Zellen zusammengeführt sind.

    • Lösung: Der Code muss möglicherweise angepasst werden, um die richtigen Zellen zu referenzieren. Überprüfe die Zeilen 7 und 9 im Code, um sicherzustellen, dass sie korrekt auf die zusammengeführten Zellen verweisen.

Alternative Methoden

Wenn Du kein VBA verwenden möchtest, kannst Du auch die Excel-Funktionalitäten nutzen:

  1. Verwende die HYPERLINK-Funktion, um manuell Links zu den verschiedenen Abschnitten in Deinem Dokument zu erstellen.
  2. Nutze die SEITE-Funktion, um die aktuelle Seitenzahl anzuzeigen. Dies ist jedoch nicht so dynamisch wie das VBA-Skript.

Praktische Beispiele

Hier ist ein Beispiel, wie Dein Inhaltsverzeichnis mit Seitenzahlen aussehen könnte:

Punkt Beschreibung Seitenzahl
1. Einführung Übersicht über das Thema 1
1.1 Unterpunkt Details zu Unterpunkt 1
2. Hauptthema Erklärungen und Konzepte 2
3. Fazit Zusammenfassung 3

Tipps für Profis

  • Verwende benannte Bereiche: Benannte Bereiche können helfen, die Lesbarkeit des Codes zu verbessern und erleichtern die Verwaltung von Daten.
  • Automatisiere den Prozess: Überlege, ob Du den Code so erweitern kannst, dass er automatisch aktualisiert wird, wenn Du Änderungen an Deinem Inhaltsverzeichnis vornimmst.

FAQ: Häufige Fragen

1. Wie kann ich das Excel Inhaltsverzeichnis mit Seitenzahlen erstellen?
Du kannst das VBA-Skript verwenden, das in der Schritt-für-Schritt-Anleitung beschrieben ist.

2. Funktioniert dies in jeder Excel-Version?
Das Skript sollte in Excel 2010 und späteren Versionen funktionieren. Überprüfe die VBA-Kompatibilität in der von Dir verwendeten Version.

3. Was ist, wenn ich mehrere Ebenen im Inhaltsverzeichnis benötige?
Du kannst den Code anpassen, um mehrere Ebenen zu erstellen, indem Du mehr Bedingungen hinzufügst, die die Zellen in den verschiedenen Ebenen überprüfen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige