Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Tabellen ein- ausblenden wenn...

Tabellen ein- ausblenden wenn...
03.10.2006 15:24:36
Heiko
Hi
Ich möchte gerne Tabellen ein und ausblenden,wenn eine bestimmte Zelle nicht leer ist.
Sprich:
Ich habe die Tabelle1 und dort die Zelle B5, wenn die Zelle nicht leer ist Tabelle2 einblenden, falls leer ausgeblendet lassen
dann Zelle B6 und Tabelle3 usw. bis zu B25 und Tabelle22
Die Tabellenblätter sind vorbereitet!
Danke
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Tabellen ein- ausblenden wenn...
03.10.2006 15:54:15
Dieterlem

Sub ausblenden()
If sheets("Tabelle1").Range("B5")="" Then
sheets("Tabelle2").Visible = False
Else
sheets("Tabelle2").Visible = True
end if
End Sub

versuchs mal damit.
AW: Tabellen ein- ausblenden wenn...
03.10.2006 16:02:31
Heiko
Ja genau so!
Jetzt nur sobald der Wert der Zelle leer ist soll angepasst werden und nicht nur beim Start oder Makro aktivieren
und wenn es geht automatisch die Die Zellen B5-B25 überwachen
Anzeige
AW: Tabellen ein- ausblenden wenn...
03.10.2006 16:53:48
fcs
Hallo Heiko,
eine der beiden folgenden Varianten steuert die Aus-/Einblendung der Tabellen bei der Werteingabe im Zellbereich B5:B25.
Variante 1 funktioniert wenn die Tabellenblätter mit gleichem Namen durchnummeriert sind.
Variante 2 lässt beliebige Tabellennamen zu.
Das(Die) Makro(s) muss du im VBA-Editor unter der Tabelle einfügen, in der sich der Bereich B5:B25 befindet.
Gruss
Franz

Variante 1:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Not Intersect(Target, Me.Range("B5:B25")) Is Nothing And Target.Cells.Count = 1 Then
If Target.Value = "" Then
Sheets("Tabelle" & (Target.Row - 3)).Visible = False
Else
Sheets("Tabelle" & (Target.Row - 3)).Visible = True
End If
End If
End Sub
'die 3 gibt an welche Tabellen-Nr. relativ zur Zeilennummer von Target sich ändern soll.
'ggf. die Ziffer anpassen, wenn die Zählung der Tabellen anders ist.
Variante 2:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Not Intersect(Target, Me.Range("B5:B25")) Is Nothing And Target.Cells.Count = 1 Then
Select Case Target.Address
Case "$B$5"
Call umschaltenBlatt(Target.Value, "Tabelle2")
Case "$B$6"
Call umschaltenBlatt(Target.Value, "Tabelle3")
'für jede Zelle eine weitere Case-Anweisung einfügen
Case Else
'do nothing
End Select
End If
End Sub
Private Sub umschaltenBlatt(Zellwert, Blatt As String)
If Zellwert = "" Then
Sheets(Blatt).Visible = False
Else
Sheets(Blatt).Visible = True
End If
End Sub

Anzeige
AW: Tabellen ein- ausblenden wenn...
03.10.2006 18:36:30
Daniel
Hallo
mal zu den Unterschieden der einzelnen Versionen:
meine Version spricht die Sheets über den Namen an, indem die Zeilen-Nummer (um 3 vermindert) an den Standart-Text "Tabelle" angehängt wird. Hauptnachteil ist, daß du die Tabellennamen nicht frei wählen kanns.
Franzs Variante spricht die Sheets über die Index-Nr. an, was zur folge hat, daß die Sheetnamen zwar völlig unwichtig sind, dafür aber nicht mehr die Reihenfolge, dh wenn du bei Franz Version die Reihenfolge von Tabelle2 und Tabelle3 tauscht, steuert das Feld B5 nicht mehr Tabelle2 sondern Tabelle3 (bei meiner Version würde B5 auch weiterhin Tabelle2 steuern.
in der 3. Variante sprichst du die Tabellen direkt mit dem Sheetnamen an, was zur Folge hat, daß du den Namen zwar auch bliebig wählen kannst, die Reihenfolge egal ist, aber dafür der Code länger wird und du ebenso bei änderungen des Tabellennamens den Code anpassen musst.
Dieses Übel erspart dir nur Franzs Variante.
Gruß, Daniel
Anzeige
AW: Tabellen ein- ausblenden wenn...
03.10.2006 16:16:19
Daniel
Hallo
diesen Code im Makro-Editor im Codebereich von Tabelle1 eintragen.
Geht aber nur, wenn deine Tabellenblätter auch wirklich Tabelle2, Tabelle3 usw. heißen, sonst wirds aufwendiger.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle As Range
For Each Zelle In Target
Select Case Zelle.Column = 2 And Zelle.Row <= 25 And Zelle.Row >= 5
Case True
On Error Resume Next
Sheets("Tabelle" & Zelle.Row - 3).Visible = (Zelle.Value <> "")
On Error GoTo 0
Case False
End Select
Next
End Sub

Dieser Code läuft jedesmal ab, wenn sich im tabelle1 was ändert. Wenn sich im Zellbereich B5:B25 was geändert hat, wird die Visible-Eigenschaft der zugehörigen Tabelle auf TRUE gesetzt, wenn die Zelle gefüllt ist und auf False, wenn sie leer ist
Gruß, Daniel
Anzeige
AW: Tabellen ein- ausblenden wenn...
03.10.2006 16:30:16
Heiko
Danke!!!!!
Klappt!!!
Tja eigentlich heißen die Tabellenblätter: 1,2,3,4 sind einfach durchnummeriert!
Aber das Klappt schon mal!!!!
AW: Tabellen ein- ausblenden wenn...
03.10.2006 16:38:05
Heiko
ja so gehts.........
Danke schon einmal für deine Bemühungen!!!
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Tabellen ein- und ausblenden in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor in Excel, indem du ALT + F11 drückst.
  2. Wähle das Arbeitsblatt aus, in dem du die Logik implementieren möchtest (z.B. Tabelle1).
  3. Füge den folgenden VBA-Code in das Codefenster des Arbeitsblatts ein:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Me.Range("B5:B25")) Is Nothing Then
        On Error Resume Next
        Sheets("Tabelle" & (Target.Row - 3)).Visible = (Target.Value <> "")
        On Error GoTo 0
    End If
End Sub
  1. Schließe den VBA-Editor und teste das Skript, indem du Werte in die Zellen B5 bis B25 eingibst. Die entsprechenden Tabellenblätter werden je nach Inhalt ein- oder ausgeblendet.

Häufige Fehler und Lösungen

  • Fehler: Tabellenblätter werden nicht ausgeblendet.

    • Lösung: Stelle sicher, dass die Namen der Tabellenblätter korrekt sind (z.B. Tabelle2, Tabelle3). Wenn die Namen anders sind, musst du den Code entsprechend anpassen.
  • Fehler: Der Code wird nicht ausgeführt.

    • Lösung: Überprüfe, ob der Code im richtigen Arbeitsblatt (z.B. Tabelle1) eingefügt wurde. Es muss im Codebereich des spezifischen Tabellenblatts sein.

Alternative Methoden

Wenn du flexiblere Optionen benötigst, kannst du eine der folgenden Methoden in Betracht ziehen:

  1. Variante mit Select Case: Diese Methode erlaubt dir, spezifische Tabellenblätter über ihre Namen zu steuern. Der Code sieht folgendermaßen aus:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Me.Range("B5:B25")) Is Nothing Then
        Select Case Target.Address
            Case "$B$5": Call umschaltenBlatt(Target.Value, "Tabelle2")
            Case "$B$6": Call umschaltenBlatt(Target.Value, "Tabelle3")
            ' Weitere Cases hinzufügen
        End Select
    End If
End Sub

Private Sub umschaltenBlatt(Zellwert As String, Blatt As String)
    Sheets(Blatt).Visible = (Zellwert <> "")
End Sub
  1. Direktes Ansprechen der Tabellenblätter: Diese Methode ermöglicht es dir, Tabellenblätter beliebiger Namen zu steuern, erfordert aber mehr Code.

Praktische Beispiele

Ein praktisches Beispiel für das Ausblenden von Tabellenblättern könnte so aussehen:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Zelle As Range
    For Each Zelle In Target
        If Zelle.Column = 2 And Zelle.Row >= 5 And Zelle.Row <= 25 Then
            On Error Resume Next
            Sheets("Tabelle" & (Zelle.Row - 3)).Visible = (Zelle.Value <> "")
            On Error GoTo 0
        End If
    Next Zelle
End Sub

Hier wird geprüft, ob sich die Werte in den Zellen B5 bis B25 ändern. Entsprechend wird das zugehörige Tabellenblatt ein- oder ausgeblendet.


Tipps für Profis

  • Nutze On Error Resume Next, um Fehler zu vermeiden, die auftreten, wenn ein Blatt nicht existiert.
  • Überlege, zusätzliche Bedingungen in den Code einzufügen, um die Sichtbarkeit von mehr als nur zwei oder drei Tabellenblättern zu steuern.
  • Teste deinen Code gründlich, um sicherzustellen, dass alle Bedingungen korrekt funktionieren.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Tabellenblätter gleichzeitig ein- oder ausblenden?
Du kannst die Logik in der Worksheet_Change-Prozedur erweitern, indem du zusätzliche Bedingungen und Cases hinzufügst, um weitere Tabellenblätter zu steuern.

2. Funktioniert dieser Code in allen Excel-Versionen?
Ja, der Code sollte in allen modernen Excel-Versionen (Excel 2007 und später) funktionieren, solange die VBA-Funktionen unterstützt werden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige