Clever-Excel-Forum

Normale Version: Zellen ausblenden- Funktion verschlanken
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

hab gerade erst angefangen etwas mit VBA rumzuhantieren und mir folgende Formel zusammengebastelt/geklaut um gewissen Zeilen auszublenden wenn ein "X" oder "x" in gewissen Zellen gesetzt wird:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   
    If Range("E56").Value = "x" Or Range("E56").Value = "X" Then
    Rows("103").Hidden = True
    Exit Sub
    Else
    Rows("103").Hidden = False
    End If
   
    If Range("E54").Value = "x" Or Range("E54").Value = "X" Then
    Rows("89:101").Hidden = True
    Exit Sub
    Else
    Rows("89:101").Hidden = False
    End If
   
    If Range("E52").Value = "x" Or Range("E52").Value = "X" Then
    Rows("127:138").Hidden = True
    Exit Sub
    Else
    Rows("127:138").Hidden = False
    End If
   
    If Range("E50").Value = "x" Or Range("E50").Value = "X" Then
    Rows("75:88").Hidden = True
    Rows("102:115").Hidden = True
    Rows("127:138").Hidden = True
   
    Exit Sub
    Else
    Rows("75:88").Hidden = False
    Rows("102:115").Hidden = False
    Rows("127:138").Hidden = False
   
    End If
   
    If Range("E43").Value = "x" Or Range("E43").Value = "X" Then
    Rows("106").Hidden = True
    Rows("117:121").Hidden = True
    Exit Sub
    Else
    Rows("106").Hidden = False
    Rows("117:121").Hidden = False
    End If
   
    If Range("E39").Value = "x" Or Range("E39").Value = "X" Then
    Rows("116").Hidden = True
    Exit Sub
    Else
    Rows("116").Hidden = False
 
    End If
   
    If Range("E42").Value = "x" Or Range("E42").Value = "X" Then
    Rows("75:88").Hidden = True
    Exit Sub
    Else
    Rows("75:88").Hidden = False
 
    End If

End Sub

Jetzt ackert Excel allerdings auch jeder mal schon 1-2 Sekündchen wenn ich ein Kreuz setzte und ich vermute einfach mal weil der Code ja schon etwas länger und sicherlich auch umständlich geschrieben ist. Kann man jemand sagen ob und wie ich da Sachen vielleicht zusammenfassen kann? Vielen Dank schon mal im voraus.
Hallo


- die jeweilige Prüfung muss doch nur durchlaufen werden, wenn genau die eine Zelle geändert wird. 
- GROSS/klein kannst du eliminieren, wenn du den Zellwert UCASE() setzt, also in GROSS umwandelst und dann immer gegen grosses X prüfst.
- Das false/true  kommt aus der Berechnung selbst 

Versuch es mal nach diesem Schema


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 
    Select Case Target.Address(0, 0)
        Case "E56"
            Rows("103").Hidden = (UCase(Target) = "X")
 
        Case "E54"
            Rows("89:101").Hidden = (UCase(Target) = "X")
   
        Case "E52"
            Rows("127:138").Hidden = (UCase(Target) = "X")
 
        Case "E50"
            Rows("75:88").Hidden = (UCase(Target) = "X")
            Rows("102:115").Hidden = (UCase(Target) = "X")
            Rows("127:138").Hidden = (UCase(Target) = "X")
           
        'usw
 
    End Select

End Sub


LG UweD
Alles klar vielen Dank.