Rubrik: Excel | VB-Versionen: VBA | 31.05.06 |
Tabellenblätter einblenden, ausblenden, unsichtbar VBA-Code, mit dem sich Tabellenblätter komfortable ein- und ausblenden lassen | ||
Autor: Michael Hoffmann | Bewertung: | Views: 23.724 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | kein Beispielprojekt |
Manchmal ist es erforderlich, Tabellenblätter so auszublenden, dass sie nicht über "Format/Einblenden" wieder eingeblendet werden können. Dies erreicht man durch die "xlveryHidden" Funktion von VBA.
Mit nachfolgendem kleinen VBA-Makro sieht das Ganze etwas eleganter aus. Alle Tabellenblätter der aktuellen Arbeitsmappe werden, je nach Status, in den Listboxen angezeigt. Bei Klick auf den Namen des Tabellenblattes in der Listbox wird dieses eingeblendet.
Wir benötigen hierfür eine Userform mit folgenden Komponenten:
- 3 Listboxen (lstBlattEin,lstN,lstU)
- 2 CommandButton (cmdH, cmdVH)
Die Listboxen könnte man wie folgt beschriften:
- lstBlattEin = Sichtbare Blätter
- lstN = "Normal" ausgeblendete Blätter diese sind über Format/Blatt/Einblenden einblendbar
- lstU = "Unsichtbare" Blätter, diese sind nicht mehr einblendbar (nur noch über die VBA Umgebung)
Für die Button-Beschriftung legen Sie folgende Texte fest:
- cmdH = "Normal" ausblenden
- cmdVH "Unsichtbar" ausblenden
Jetzt noch nachfolgenden Code in den Codeteil der UserForm einfügen:
Option Explicit ' '''''''''''''''''''''''''''''''''''''''''''''''''''' ' Ein und Ausblenden von einzelnen Tabellenblättern ' ' und Anzeige in einer Listbox ' ' coded 2006 von Michael Hoffmann ' ' '''''''''''''''''''''''''''''''''''''''''''''''''''' Dim ws As Worksheet
Private Sub UserForm_Initialize() For Each ws In ActiveWorkbook.Sheets If ws.Visible = -1 Then lstBlattEin.AddItem ws.Name lstBlattEin.ListIndex = 0 ElseIf ws.Visible = 0 Then lstN.AddItem ws.Name ELseIf ws.Visible = 2 Then lstU.AddItem ws.Name End If Next ws End Sub
Private Sub cmdH_Click() On Error Resume Next If lstBlattEin.Value = "" Then MsgBox "Bitte erst ein Blatt auswählen", 64, "Hallo " & Environ("username") Else Sheets(lstBlattEin.Value).Visible = 0 Unload Me frmBlatt.Show End If End Sub
Private Sub cmdVH_Click() On Error Resume Next If lstBlattEin.Value = "" Then MsgBox "Bitte erst ein Blatt auswählen", 64, "Hallo " & Environ("username") Else Sheets(lstBlattEin.Value).Visible = 2 Unload Me frmBlatt.Show End If End Sub
Private Sub lstN_Click() On Error Resume Next Sheets(lstN.Value).Visible = -1 Unload Me frmBlatt.Show End Sub
Private Sub lstU_Click() On Error Resume Next Sheets(lstU.Value).Visible = -1 Unload Me frmBlatt.Show End Sub
Viel Spaß mit dem Tool!