Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Wenn Wort in Zelle, dann blende die Zeile ein
#1
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
Antworten Top
#2
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
Antworten Top
#3
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
Antworten Top
#4
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
Antworten Top
#5
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.
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top
#6
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
Antworten Top
#7
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!


Angehängte Dateien
.xlsm   Zeilen ausblenden.xlsm (Größe: 16,7 KB / Downloads: 4)
[-] Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:
  • smiger82
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste