Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1820to1824
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

xlVeryHidden

xlVeryHidden
18.03.2021 12:34:51
Benedikt
Hallo liebes Forum,
Ich nutze einen Command Button als Trigger für eine Filterung.
Auf Klicken sollen alle Worksheets (10 Stück) nicht sichtbar auf hide eingestellt werden.
Einige der Worksheets sind bereits auf xlVeryHidden eingestellt
Ich verwende dafür folgenden Code. Leider klappt es nicht, hat jemand einen Tipp?
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
If ws.Visible = xlSheetVisible Then
Text = ws.Name
Worksheets(Text).Visible = xlVeryHidden
End If
Next ws
Vielen Dank und beste Grüße
Bene

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: xlVeryHidden
18.03.2021 12:51:19
Werner
Hallo,
weshalb nimmst du erst den Namen des Blattes in eine Variable, um dann das Blatt über die Variable anzusprechen?
Wenn, dann so:
Public Sub aaa()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
If ws.Visible Then
ws.Visible = xlVeryHidden
End If
Next ws
End Sub
Das läuft aber in einen Fehler. Damit versuchst du dann alle Blätter auszublenden, was nicht geht. Es muss mindestens ein Tabellenblatt eingeblendet sein.
Gruß Werner

AW: xlVeryHidden
18.03.2021 12:51:32
Klaus
Hallo Bene,
du darfst nicht alle Tabellen ausblenden - mindestens eine muss sichtbar sein! Mach eine "Tabelle1" und pack da ein nettes Bild rein, dann diesen Code:
Sub blatt()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
If ws.Visible = True And Not ws.Name = "Tabelle1" Then
Worksheets(ws.Name).Visible = xlVeryHidden
End If
Next ws
End Sub
Statt "Tabelle1" darf die natürlich auch anders heissen.
LG,
Klaus M.

Anzeige
AW: xlVeryHidden
18.03.2021 12:57:05
Benedikt
Vielen Dank Klaus, das war die Lösung!

Noch etwas kürzer:
18.03.2021 13:06:34
Klaus
Die Abfrage "Visible = true" ist unnötig. Ist ein Blatt bereits VeryHidden, kann es trotzdem ohne Fehlermeldung nochmals auf VeryHidden gesetzt werden. Es kann also ein Teil des IF gespart werden:
Sub blatt()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
If Not ws.Name = "Tabelle1" Then Worksheets(ws.Name).Visible = xlVeryHidden
Next ws
End Sub
LG,
Klaus M.vdT

und noch kürzer:
18.03.2021 13:08:55
Klaus
ws ist bereits ein Worksheet, es kann direkt referenziert werden ohne den Umweg über ws.name zu gehen. Worksheets ist ohne Referenzierung automatisch im ActiveWorkbook, auch hier kann nochmal gekürzt werden:
Sub blatt()
Dim ws As Worksheet
For Each ws In Worksheets
If Not ws.Name = "Tabelle1" Then ws.Visible = xlVeryHidden
Next ws
End Sub
und wieder ein paar byte Speicherplatz gespart!
LG,
Klaus M.

Anzeige
AW: und noch kürzer:
18.03.2021 13:38:35
Daniel
auch das IF-Then kann man sich sparen
Sub test()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
ws.Visible = 2 + 3 * (ws.Name = "Tabelle1")
Next
End Sub

Gruß Daniel

cool!
18.03.2021 14:07:49
Klaus
Hallo Daniel,
Hut ab! Für mich als Autodidakt: Wo kann ich "visible = 2" und "visible = 5" denn nachlesen, was genau die Nummern bedeuten?
LG,
Klaus M.

AW: cool!
18.03.2021 14:58:21
Daniel
HI
die Parametrisierung der meisten VBA-Funktionen und Befehle läuft über Zahlen.
Da man sich Zahlen aber schlechter merken kann als feststehende Begriffe, hat MS für jeden Zahlenwert Systemkonstanten hinterlegt, die einen Sprechenden Namen haben und den dazugehörigen Zahlenwert enthalten.
die Systemkonstanten erkennt man daran, dass sie mit xl (Excel) oder vb (VBA) beginnen.
wenn man wissen will, welcher Wert hinter einere Systemkonstante steckt, dann gibt man diese zusammen mit dem Befehl ? im Direktfenster ein:
?xlsheetvisible
btw WAHR wird in VBA nicht als 1 sondern als -1 verwendet.
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige