Alle Tabellenblätter auf einmal einblenden oder ausblenden

visual-basic

Habt Ihr auch schon einmal eine Excel Datei bekommen in der vielle Tabellenblätter ausgeblendet waren und Ihr dann einzeln jedes Blatt einblenden musstet?

Ich leider auch.

Noch müsahmer ist es jedoch wenn ich selber an einem Excel Modell arbeite welches zu 97% fertig ist, in dem ich sämtliche für die User nicht relevanten Tabellenblätter ausgeblendet habe, und dann bei jedem Makel dass ich finde alles wieder ein- und ausblenden muss bis die Datei perfekt ist!

Das hat jetzt aber alles ein Ende.

Makro zum Ein- und Ausblenden aller Tabellenblätter in einer Excel Datei

Der folgende Code erlaubt es einem alle Tabellenblätter auf einmal ein- oder auszublenden. Das spezielle daran ist dass sich Excel merkt welche Tabellenblätter zum Anfang ausgeblendet waren und Ihr diese mit einem weiteren klick auf den Makro wieder in den original Zustand versetzen könnt. Sogar “Very Hidden” Sheets können so eingeblendet werden.

Ihr müsst den Makro auf eine Arbeitsmappe anwenden bei der auch Tabellenblätter versteckt sind: Sonst passiert nichts!

Hinweis: Dies funktioniert nur so lange Excel geöffnet bleibt, die Arbeitsblätter nicht umbenannt warden, und Ihr den Makro bei nur jeweils einem Arbeitsdatei einsetzt!

Den folgenden Code könnt Ihr kopieren und in ein neues Makro Modul einfügen, zum Beispiel in Eurem persönlichen Excel Datei (z.B. Personal.xlam) welche Ihr immer wenn Ihr Excel öffnet benutzen könnt!

Ich hoffe es hilft Euch in Eurer täglichen Arbeit:

Sub ShowHideAllSheets()
'Author:        Lukas Rohr
'Website:       www.excelnova.org
'Date:          09.09.2015
'Version:       1.0
'Description:   Shows all sheets in Workbook and remembers if these
'               were hidden or very hidden to be reset upon running macro again
'CAUTION:       Settings are lost if workbook is closed!
Static arrWksStatus As Variant
Static bIsOn As Boolean
Dim wksCount As Integer
Dim wks As Worksheet
Dim i As Integer
On Error Resume Next
Application.ScreenUpdating = False
wksCount = ActiveWorkbook.Worksheets.Count 'Get count of worksheets
With ActiveWorkbook
    'Check if wkbstructure is protected
    If .ProtectStructure = True Then
        MsgBox ("Die Struktur der Arbeitsdatei ist gesperrt." & vbNewLine _
        & "Bitte die Datei entsperren um den Makro zu benutzen." & vbNewLine _
        & "Der Makro wird nicht ausgeführt.")
        GoTo EndFast
    End If
    'Main body of programm
    If bIsOn = False Then 'Check if array is used
        ReDim arrWksStatus(1, wksCount) 'Dim array if it was empty
        For i = 1 To wksCount 'Fill array with name and visibility status for each wks
            arrWksStatus(0, i) = .Worksheets(i).Name
            arrWksStatus(1, i) = .Worksheets(i).Visible
            .Worksheets(i).Visible = xlSheetVisible 'show wks
        Next i
        bIsOn = True
    Else
        For i = 1 To wksCount
            .Worksheets(arrWksStatus(0, i)).Visible = arrWksStatus(1, i) 'reset visibility status of wks to original
        Next i
        Set arrWksStatus = Nothing 'kill array
        bIsOn = False
    End If
End With
EndFast:
Application.ScreenUpdating = True
End Sub