Microsoft Excel

Herbers Excel/VBA-Archiv

Inhaltsverzeichnis automatisch

Betrifft: Inhaltsverzeichnis automatisch von: Petr
Geschrieben am: 21.09.2020 10:18:31

Hello again,

ich bastel gerade an meinem automatisiertem Inhaltsverzeichnis, bekomme es aber leider nicht hin, dass das Makro die Sheets Hidden und VeryHidden ignoriert.

In dem Workbook anbei sieht man das alte Private Sub Makro und den neuen Versuch darüber in "Tabelle1".

https://www.herber.de/bbs/user/140348.xlsm

Ich freue mich über Hilfe und Ideen.
Grüße
Petr

Betrifft: AW: Inhaltsverzeichnis automatisch
von: Werner
Geschrieben am: 21.09.2020 10:37:07

Hallo,

keine Ahnung was du hast. Die ausgeblendeten Blätter bleiben doch unberücksichtigt.
Dein Zähler intInhaltZaehler muss ins If ws.Visible .... End if.

Es macht heute keinen Sinn mehr Laufvariable as Integer zu deklarieren.
Option Explicit

Private Sub Worksheet_Activate() 'Neue Idee
Dim loInhaltZaehler As Long, ws As Worksheet

loInhaltZaehler = 8

Tabelle1.Range("A6:Z100").Clear

For Each ws In ThisWorkbook.Worksheets
    If ws.Index > 1 Then
        If ws.Visible = True Then
            'Abfrage Name
            Tabelle1.Cells(loInhaltZaehler, 2) = ws.Name
            'Hyperlinks Name
            Tabelle1.Cells(loInhaltZaehler, 2).Hyperlinks.Add Anchor:=Cells(loInhaltZaehler, 2), _
 _
            Address:="", SubAddress:="'" & ws.Name & "'!A1", TextToDisplay:=ws.Name
            'Formatierung Name
            With Cells(loInhaltZaehler, 2)
                .Font.Color = vbBlack
                .Font.Underline = xlUnderlineStyleNone
                .Font.Size = 10
            End With
            'Abfrage Bearbeitungsstand
            Tabelle1.Cells(loInhaltZaehler, 3) = ws.Range("E5")
            'Formatierung Bearbeitungsstand
            If Cells(loInhaltZaehler, 3) = "Offen" Then
                With Cells(loInhaltZaehler, 3)
                    .Font.Color = vbWhite
                    .Font.Bold = True
                    .Font.Size = 9
                    .Interior.ThemeColor = xlThemeColorAccent6
                    .HorizontalAlignment = xlCenter
                End With
            ElseIf Cells(loInhaltZaehler, 3) = "Erledigt" Then
                With Cells(loInhaltZaehler, 3)
                    .Font.Bold = True
                    .Font.Size = 9
                    .Interior.Color = 5296274
                    .HorizontalAlignment = xlCenter
                End With
            Else
                Cells(loInhaltZaehler, 3).Clear
            End If
            'Formatierung Nummerierung
            Cells(loInhaltZaehler, 1) = loInhaltZaehler - 7
            Cells(loInhaltZaehler, 1).Font.Bold = True
            loInhaltZaehler = loInhaltZaehler + 1
        End If
    End If
Next ws

Range("B7").Value = "Arbeitsblatt"
Range("C7").Value = "Stand"
Range("C7").HorizontalAlignment = xlCenter
Range("B7:C7").Font.Bold = True
Columns("B:C").EntireColumn.AutoFit

End Sub
Gruß Werner

Betrifft: AW: Inhaltsverzeichnis automatisch
von: Petr
Geschrieben am: 21.09.2020 11:53:08

Na ich hatte eben genau das Problem, dass ich die Variable nicht mit ins If genommen habe. Danke für deine Hilfe Werner!

Auch nehme ich ab sofort Long als Laufvariable.

VG
Petr

Betrifft: Gerne und Danke für die Rückmeldung. o.w.T.
von: Werner
Geschrieben am: 21.09.2020 12:23:46



Betrifft: AW: Inhaltsverzeichnis automatisch
von: Herbert_Grom
Geschrieben am: 21.09.2020 16:15:11

Hallo Werner,

du schreibst: Es macht heute keinen Sinn mehr Laufvariable as Integer zu deklarieren.

Da hast du insofern recht, als die Prozessoren heute ein vielfaches an Rechenleistung bieten, als noch die CPU's von vor 10 oder 20 Jahren.

Grundsätzlich belegt "Long" jedoch doppelt so viel Arbeitsspeicher (4 Bytes) als "Integer". Und da im Alltag kaum jemand mehr als 32.767 Zeilen/Datensätze verarbeiten muss, plädiere ich nach wie vor für "Integer", denn ich bin dafür, jedes Quäntchen Geschwindigkeitsgewinn auszunutzen!

Servus

Beiträge aus dem Excel-Forum zum Thema "Inhaltsverzeichnis automatisch"