Excel VBA Tabellenblätter ausblenden außer bestimmte

Excelmania

Lieutenant
Registriert
Apr. 2010
Beiträge
798
Hallo.

Ich habe eine Excel-Arbeitsmappe mit vielen Tabellenblättern. Zur besseren Übersicht soll z. B. das Tabellenblatt Anleitung und weitere nur bei Aufruf über eine ActivX-Schaltfläche eingblendet werden.

Folgenden Code habe ich erstellt. Es wird jedoch immer ein anderes Tabellenblatt angezeigt.

Code:
Private Sub PSD_CB_Anleitung_anzeigen_Click()

Dim wks As Worksheet

Application.DisplayAlerts = False

Worksheets("Anleitung").Activate
For Each wks In ActiveWorkbook.Worksheets
        If wks.Name <> ThisWorkbook.ActiveSheet.Name Then
        wks.Visible = xlSheetHidden
        End If
Next

Application.DisplayAlerts = True

End Sub

Kann mir jemand sagen, was falsch ist?
 
Und warum vergleichst du nicht den Namen direkt mit "Anleitung"? Was passiert dann?
 
Zuletzt bearbeitet:
Hmtja…

Du brüuchtest so etwas wie eine «Kugelschreiberfunktion», blendent auf Knopfruck ein oder aus.
Meiner Meinung nach aber besser 2 Schaltflächen: eine fürs Einblenden, eine fürs Ausblenden.

Spannende Frage: warum gibst du nicht einfach eine Liste an und blendet jedes gewisse Blatt unmittelbar ein und aus?
Worksheets("Anleitung").Visible = True | xlHidden

Um direkte Ansprche kommst du praktisch nicht rum. Je nach Menge mögen ein Array und eine Schleife (und mit Kniff ein übergebener Schalter) das etwas verschlanken.

Code:
Sub Einblenden()
Umblenden True
End Sub
Sub Ausblenden()
Umblenden False
End Sub

Sub Umblenden(EinAus As Boolean)
Dim I As Integer
Dim Blätter As Variant
Blätter = Array("Blatt1", "Blatt4", "Blatt6")
For I = 0 To UBound(Blätter)
  Worksheets(Blätter(I)).Visible = IIf(EinAus = True, True, xlHidden)
Next
End Sub
Die oberen Codes gehören den Buttons, im unteren wählte ich Blätter meiner vielgequälten Testmappe.

CN8
 
Zurück
Oben