Excel VBA: Tabellenblätter bei gewissen Zellenwert ausblenden?
Hallo Zusammen,
Ich will mittels VBA ein Excel modifizieren, damit möglichst wenige Tabellenblätter angezeigt werden. In einem Tabellenblatt (z.B. "Auswahl") habe ich die Zellen C62, C88 und C114, die jeweils ein spezielles Tabellenblatt anzeigen sollen. Jedoch gibt es im Moment nur LZF-Meldungen.
Es soll jeweils bei "Yes" nichts angezeigt, bei "No" die entsprechende Tabelle eingeblendet werden.
Ansonsten sollen die "nicht betroffenen" Tabellen ausgeblendet bleiben
Hier der Code im Worksheet "DieseArbeitsmappe":
Private Sub Worksheet_Open()
'Beim Öffnen des Excels die betroffenen Blätter ausblenden
ThisWorkbook.Worksheets("Tabelle4").Visible = False
ThisWorkbook.Worksheets("Tabelle5").Visible = False
ThisWorkbook.Worksheets("Tabelle6").Visible = False
End Sub
In Blatt "Auswahl" (Tabelle7) habe ich folgenden Code:
Private Sub Worksheet_Change(ByVal Target As Range)
‘Hier sind vorher noch andere IF-Regeln hinterlegt, die nur Reihen in Tabelle7 ein/ausblenden
If Range("C62").Value = "No" Then 'Tabellenblätter einblenden, sobald in der jeweiligen Zelle "No" ausgewählt wird
ThisWorkbook.Worksheets("Tabelle6").Visible = True
Else
ThisWorkbook.Worksheets("Tabelle6").Visible = False ‘Hier erhalte ich jeweils ein LZF 9?
End If
If Range("C88").Value = "No" Then
ThisWorkbook.Worksheets("Tabelle5").Visible = True
Else
ThisWorkbook.Worksheets("Tabelle5").Visible = False ‘Hier erhalte ich jeweils ein LZF 9?
End If
If Range("C114").Value = "No" Then
ThisWorkbook.Worksheets("Tabelle4").Visible = True
Else
ThisWorkbook.Worksheets("Tabelle4").Visible = False ‘Hier erhalte ich jeweils ein LZF 9?
End If
End Sub
Weshalb gibt es jeweils einen Fehler und wie kann ich diesen am einfachsten beheben?
Vielen Dank, Michael
2 Antworten
Ich hab deinen Code jetzt 1:1 rüberkopiert und an meine Tabellennamen und Zellen angepasst. Das läuft problemlos. Schau nochmal, ob deine Tabellenblätter wirklich so heißen, wie sie im Code stehen. Man kann die Namen ja auch ändern.
Du kannst auch in den Direktbereich gehen (Strg+G) und da diesen Code ausführen:
for i = 1 to worksheets.Count:?worksheets(i).name:next
Damit werden alle Tabellennamen aufgelistet und du kannst die Namen vielleicht da rauskopieren.
Oder du greifst per Index auf die Tabellenblätter zu. Also anstatt 'Worksheets("Tabelle5")' benutzt du z.B. 'Worksheets(5)'. Das wäre dann einfach das fünfte Tabellenblatt, was in der Mappe ist.
Die Indexangabe funktioniert tatsächlich, dnanke! Habe auch noch einen Check eingebaut, wenn es schon ausgeblendet ist (GoTo 0) und es funktioniert jetzt.
Es würde mich wundern, wenn man ein unsichtbares Sheet nicht erneut unsichtbar schalten kann, aber falls das das Problem sein sollte, würde ich direkt vor dem Unsichtbarschalten einmal prüfen, ob es bereits unsichtbar ist.
Der Fehler scheint ja nur beim Ausblenden aufzutreten.
Ich habe mit einer weiteren If-Formel geprüft, ob das Blatt ausgeblendet ist und wenn ja, springt er raus (GoTo 0). Ich denke das Problem ist, dass ich die Blätter aus einer anderen Liste rüber kopiert habe.
Du kannst auch probieren, mit
oder
zu arbeiten.