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
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)
25.09.2019, 11:13 (Dieser Beitrag wurde zuletzt bearbeitet: 25.09.2019, 11:18 von Werner.M.)
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.
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)
25.09.2019, 15:39 (Dieser Beitrag wurde zuletzt bearbeitet: 25.09.2019, 15:45 von Gast 123.)
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
26.09.2019, 19:14 (Dieser Beitrag wurde zuletzt bearbeitet: 26.09.2019, 19:22 von Gast 123.)
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!
Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:1 Nutzer sagt Danke an Gast 123 für diesen Beitrag 28 • smiger82