Clever-Excel-Forum

Normale Version: Wenn Wort in Zelle, dann blende die Zeile ein
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo
ich bin schon Tage auf der Suche.
Ich bin Neuling in VBA und komme einfach nicht weiter...
Ich erhalte immer eine debugg Meldung. Und finde den Fehler einfach nicht.

ich möchte einfach nur, wenn in der Zelle K10 das Wort "Haus" steht, dann soll die Zeile 156 eingeblendet werden.
Wenn etwas anderes darin steht soll die Zeile ausgeblendet sein.  > Ach ja, das Wort "Haus" wird per Excel WENN-Befehl automatisch eingesetzt, wenn gewisse Bedingungen erfüllt sind. 

Die "Fehlermeldung" bringt mein Excel fast an den Anschlag, das ich dann gar nichts mehr machen kann.

Folgenden Code habe ich geschrieben:

Rechtsklick  auf Tabellenblatt > Code anzeigen:

Private Sub Worksheet_Calculate()

If Range("K10").Value = "Haus" Then
    Rows(156).Hidden = True
        Else
    Rows(156).Hidden = False
End If
End Sub

Ich hoffe jemand von euch kann mir helfen...

Grüsse smiger82
Hallo

das glaub ich dir das dich dein Code zum verzweifeln bringt, du hast schlicht das falsche Ereigniss zum Code auslösen gewaehlt. Das ist m.E. alles!  
Du gehst auf Calculate = Berechnen!  Das muss katastrophal schiefgehen!  Worksheet_Calculate

Probier bitte mal:  Private Sub Worksheet_Change(ByVal Target As Range)

mfg Gast 123
Hallo,

du solltest dir im Klaren darüber sein, dass das Worksheet_Calculate Ereignis bei jeder Formelberechnung, egal wo auf dem Blatt die Formel berechnet wird, ausgelöst wird und nicht nur wenn die Formel in Zelle K10 berechnet wird.

Es sollte besser über das Worksheet_Change die Zelle/Zellen überwacht werden die bei Eingabe eines Wertes die Berechnung in K10 auslösen.

Wie sieht denn deine Formel in K10 aus?

Gruß Werner

Hallo Gast123,

mit dem Change Ereignis kann dann aber nicht die Zelle K10 überwacht werden, da das Change Ereignis bei Formelberechnung nicht auslöst.

Gruß Werner
Hallo zusammen

danke das hat funktioniert!

Frage, kann man diese auch mit mehreren kombinieren auf einem Tabellenblatt? 

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("K10").Value = "Haus" Then
    Rows(156).Hidden = True
        Else
    Rows(156).Hidden = False
End If
End Sub


Private Sub Worksheet2_Change(ByVal Target As Range)

If Range("G19").Value = "Elternzimmer" Then

    Rows("209:211").Hidden = True

        Else

    Rows("209:211").Hidden = False

End If
End Sub

Grüsse smiger82
Hallo,

Ich schlage Dir eine Lösung mit IF oder mit Case Select vor

Sorry, ich werde gerade zu einer Untersuchung abgeholt. Gegegenenfalls melde ich mich später noch einmal.
Hallo

du kannst den Befehl auch in "ThisWorkbbook" bzw. "DieseArbeitsmappee" reinschreiben. Dann musst du die Tabelle aber bitte mit angeben! 
Ich benutze hier den ElseIf Befehl. Da kannst du beliebig viele Tabellen mit ElseIf weiter dranhaengen.

mfg  Gast 123

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Worksheets("Tabelle1").Range("K10").Value = "Haus" Then
   Worksheets("Tabelle1").Rows(156).Hidden = True
       Else
   Worksheets("Tabelle1").Rows(156).Hidden = False
ElseIf Worksheets("Tabelle2").Range("G19").Value = "Elternzimmer" Then
   Worksheets("Tabelle2").Rows("209:211").Hidden = True
       Else
   Worksheets("Tabelle2").Rows("209:211").Hidden = False
End If
End Sub

Sorry, habe gerade in meiner Datei gesehen, mit ElseIf geht es nicht!  Also, Code mit normalem If Then verwenden!!


Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Worksheets("Tabelle1").Range("K10").Value = "Haus" Then
   Worksheets("Tabelle1").Rows(156).Hidden = True
       Else
   Worksheets("Tabelle1").Rows(156).Hidden = False
End If
If Worksheets("Tabelle2").Range("G19").Value = "Elternzimmer" Then
   Worksheets("Tabelle2").Rows("209:211").Hidden = True
       Else
   Worksheets("Tabelle2").Rows("209:211").Hidden = False
End If
End Sub
Hallo

zur Sicherheit für VBA Anfaenger stelle ich eine Beispieldatei ins Forum. Da könnt ihr die Funktion sehen und das Makro nach dem testen ins Original kopieren.

mfg Gast 123

Nachtrag    die Demo Zeile im Beispiel steht auf Zeile 10 bzw. 15. Das musst du für Dein Original bitte aendern!