Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1360to1364
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

Kann man dies auch kürzer schreiben?

Kann man dies auch kürzer schreiben?
21.05.2014 16:33:57
Alexander

Private Sub JahrVor2016_Click()
Sheets("2017").Visible = True
Sheets("2017").Select
Sheets("2014").Visible = False
Sheets("2015").Visible = False
Sheets("2016").Visible = False
Sheets("2018").Visible = False
Sheets("2019").Visible = False
Sheets("2020").Visible = False
Sheets("2021").Visible = False
Sheets("2022").Visible = False
Sheets("2023").Visible = False
Sheets("2024").Visible = False
Sheets("2025").Visible = False
Sheets("2026").Visible = False
Sheets("2027").Visible = False
Sheets("2028").Visible = False
Sheets("2029").Visible = False
Sheets("2030").Visible = False
Sheets("2031").Visible = False
Sheets("2032").Visible = False
Sheets("2033").Visible = False
Sheets("2034").Visible = False
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: Kann man dies auch kürzer schreiben?
21.05.2014 16:37:43
Klaus
Hallo Alexander,
auf genau dein Beispiel bezogen:
Sub test()
Dim j As String
Sheets("2017").Visible = True
Sheets("2017").Select
For i = 2014 To 2034
j = i
Sheets(j).Visible = False
Next i
End Sub
Grüße,
Klaus M.vdT.

AW: Bitte mit Prüfung,?
21.05.2014 16:44:32
Daniel
Hi Klaus
da blendest du dir aber 2017 wieder aus.
wenn sich das Blatt, welches stehen bleiben soll, innerhalb der Liste befindet, dann muss man noch eine entsprechende Prüfung einbauen:
dim i as long
Sheets("2017").Visible = True
Sheets("2017").Select
for i = 2014 to 2034
if CStr(i)  ActiveSheet.Name then Sheets(CStr(i)).Visible = False
Next
Gruß Daniel

Anzeige
AW: Bitte mit Prüfung,?
22.05.2014 07:42:48
Klaus
HI Daniel,
recht hast du - oder, das "einblenden" einfach ans Ende stellen.
Sub test()
Dim j As String
For i = 2014 To 2034
j = i
Sheets(j).Visible = False
Next i
Sheets("2017").Visible = True
Sheets("2017").Select
End Sub
CStr(i) ist das worauf ich nicht kam, darum mein seltsamer Umweg über "as string" :-)
Grüße,
Klaus

AW: Kann man dies auch kürzer schreiben?
21.05.2014 16:42:38
selli
hallo alexander,
For i = 1 To Worksheets.Count
If Sheets(i).Name * 1 2017 Then Sheets(i).Visible = False
Next i
geht aber nur, wenn alle sheets zahlenähnliche namen haben und du nur 2017 sehen möchtest.
gruß
selli

Anzeige
AW: Kann man dies auch kürzer schreiben?
21.05.2014 16:50:04
Daniel
Hi
da noch mal zwei Korrekturen zu:
wenn du schon mit Worksheets.Count arbeitest, dann auch mit Worksheets(i).
Warum?
Es gibt Worksheets, das sind die Tabellenblätter und es gibt Sheets, dass sind Diagrammblätter und Tabellenblätter.
Wenn deine Datei auch Diagrammblätter enthält, dann weichen die Indexnummern bei Sheets und Worksheets voneinander ab und auch die Ergebnisse von .Count sind unterschiedlich.
eine Möglichkeit bei unbekannten Blattnamen alles auszublenden ausser Blatt 2017 wäre diese:
dim sh as Worksheet
Sheets("2017").Visible = True
for Each sh in ActiveWorkbook.Worksheets
if sh.Name  "2017" then sh.Visible = False
Next
gruß Daniel

Anzeige
@daniel: du bist lehrer, oder? e.o.m.
21.05.2014 16:52:13
selli

AW: @daniel: du bist lehrer, oder? nö
21.05.2014 16:57:16
Daniel
ich möchte dir nur die Rückfragen vermeiden, die kommen wenn das letzte Blatt immer stehen bleibt und nicht mit ausgeblendet wird.
Gruß Daniel

AW: Kann man dies auch kürzer schreiben?
21.05.2014 17:18:58
Alexander
Hallo!
-Wow, na das ging ja mal fix!
Bin absolut begeistert!
Vielen, vielen Dank - funktioniert prima!
Viele Grüße
Alex

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige