Worksheet_Change mehrmals verwenden

Hallo zusammen,

ist es möglich den Worksheet_Change mehrmals zu verwenden?

Hier mein Code.

Sub Worksheet_Change(ByVal target As Range)
If (Range(„F2“).Value = 1000) And (Range(„F3“).Value = 2000) Then Call einblenden1
End Sub

Sub Worksheet_Change(ByVal target As Range)
If (Range(„F4“).Value = 1000) And (Range(„F5“).Value = 2000) Then Call einblenden2
End Sub

Sub Worksheet_Change(ByVal target As Range)
If (Range(„F6“).Value = 1000) And (Range(„F7“).Value = 2000) Then Call einblenden3
End Sub

Und wie schreibe ich den Code falls F6 NICHT 1000 ist und F7 NICHT 2000 ist?
Wenn dies eintrifft dann call ausblenden1/2/3. Könntet Ihr mir den Code dann mit Kommentaren aufschlüsseln? Möchte ja auch was lernen :wink:

Ich hätte dann quasi 6 mal Worksheet_Change.

Ich hoffe Ihr könnt mir bei diesem Thema helfen.

Wünsche ein schönes Wochenende!

Gruß

Julian

Hallo Julian,

ob es funktioniert, kann ich Dir nicht sagen, weil ich es nicht ausprobieren will :wink:
Aber wozu überhaupt? Lasse doch die drei Anweisungen in einem Makro durchlaufen!

Und für die Ungleichheitsbedingungen ersetzt Du einfach das „=“ durch „“

Viel Erfolg

Thomas

Sub Worksheet_Change(ByVal target As Range)
If (Range(„F2“).Value = 1000) And (Range(„F3“).Value = 2000) Then Call einblenden1
If (Range(„F4“).Value = 1000) And (Range(„F5“).Value = 2000) Then Call einblenden2
If (Range(„F6“).Value = 1000) And (Range(„F7“).Value = 2000) Then Call einblenden3
If (Range(„F6“).Value 1000) And (Range(„F7“).Value 2000) Then Call ausblenden123

End Sub

Hallo falken,

warum kompliziert wenn es auch einfach geht :smiley:

ich hab mein beispiel hier ein wenig abgeschwächt, damit es nicht zu Aufwendig ist.
Jetzt muss ich aber doch nochmal eine Frage stellen.

If (Range(„F2“).Value = 1000) And (Range(„F3“).Value = 2000) Then Call einblenden1
If (Range(„F4“).Value = 1000) And (Range(„F5“).Value = 2000) Then Call einblenden2
If (Range(„F6“).Value = 1000) And (Range(„F7“).Value = 2000) Then Call einblenden3

If (Range(„F6“).Value 1000) And (Range(„F7“).Value 2000) Then Call ausblenden123

Das Funktioniert einwandfrei.

Habe jetzt aber nur bei der Abfrage F2 und F3 gleich 6 solcher abfragen.

If (Range(„F2“).Value = 1000) And (Range(„F3“).Value = 500) Then Call einblenden1
If (Range(„F2“).Value = 2000) And (Range(„F3“).Value = 1000) Then Call einblenden1
If (Range(„F2“).Value = 3000) And (Range(„F3“).Value = 1500) Then Call einblenden1

If (Range(„F6“).Value 1000) And (Range(„F7“).Value 500) Then Call ausblenden12
If (Range(„F6“).Value 2000) And (Range(„F7“).Value 1000) Then Call ausblenden12
If (Range(„F6“).Value 3000) And (Range(„F7“).Value 1500) Then Call ausblenden12

Des weiteren kommen andere Zahlen dazu
1000 -> 500, 250, 200, 125 und 100
2000 -> 1000, 500, 400, 250 und 200
3000 -> 1500, 1000, 750, 600, 500, 375 und 300

… (Range(„F3“).Value = 500 Or Range(„F3“).Value = 250…)

Habe ich auch hinbekommen. Kein Problem.

Wenn ich das alles jetzt angelegt habe:

If (Range(„F2“).Value = 1000) And (Range(„F3“).Value = 500 Or Range(„F3“).Value = 250 Or Range(„F3“).Value = 200 Or Range(„F3“).Value = 125 Or Range(„F3“).Value = 100) Then Call einblenden1

If (Range(„F2“).Value 1000) Or (Range(„F3“).Value 500 Or Range(„F3“).Value 250 Or Range(„F3“).Value 200 Or Range(„F3“).Value 125 Or Range(„F3“).Value 100) Then ActiveSheet.Shapes(„Mitteln1“).Visible = False

If (Range(„F2“).Value = 2000) And (Range(„F3“).Value = 1000 Or Range(„F3“).Value = 500 Or Range(„F3“).Value = 400 Or Range(„F3“).Value = 250 Or Range(„F3“).Value = 200) Then Call einblenden1

If (Range(„F2“).Value 2000) Or (Range(„F3“).Value 1000 Or Range(„F3“).Value 500 Or Range(„F3“).Value 400 Or Range(„F3“).Value 250 Or Range(„F3“).Value 200) Then ActiveSheet.Shapes(„Mitteln1“).Visible = False

If (Range(„F2“).Value = 3000) And (Range(„F3“).Value = 1500 Or Range(„F3“).Value = 1000 Or Range(„F3“).Value = 750 Or Range(„F3“).Value = 600 Or Range(„F3“).Value = 500 Or Range(„F3“).Value = 375 Or Range(„F3“).Value = 300) Then Call einblenden1

If (Range(„F2“).Value 3000) Or (Range(„F3“).Value 1500 Or Range(„F3“).Value 1000 Or Range(„F3“).Value 750 Or Range(„F3“).Value 600 Or Range(„F3“).Value 500 Or Range(„F3“).Value 375 Or Range(„F3“).Value 300) Then ActiveSheet.Shapes(„Mitteln1“).Visible = False

Funktioniert es nicht mehr…

Ich weiss auch nicht warum.

Weißt du einen Rat :smiley: ?

Hallo,
abgesehen davon, dass ich nicht genau weiß, wie die Logik funktionieren soll, kann ich Dir nur raten, das Ganze möglichst übersichtlich aufzubauen, so dass Du selber da durchblickst :wink:
Dazu kann es hilfreich sein, boolesche Variablen einzuführen und dann den Debugger zu benutzen samt Überwachungsfenster. Du kannst den Code durch „stop“ an beliebiger Stelle unterbrechen und schrittweise mit „F8“ weiterlaufen lassen. Vorher das Ü-Fenster im Editor einblenden und die fraglichen Variablen da hineinziehen.
So solltest Du den Fehler genau lokalisieren können.

Ich würde die Zeilen auch nicht zu lang machen. Statt

If (Range(„F2“).Value 1000) Or (Range(„F3“).Value 500 Or
Range(„F3“).Value 250 Or Range(„F3“).Value 200 Or
Range(„F3“).Value 125 Or Range(„F3“).Value 100) Then
ActiveSheet.Shapes(„Mitteln1“).Visible = False

müsste auch gehen:
With ActiveSheet.Shapes(„Mitteln1“)
If (Range(„F2“) 1000) Then .Visible = False
If (Range(„F3“) 500 Then .Visible = False
Range(„F3“) 250 Then .Visible = False
If Range(„F3“) 200 Then .Visible = False
If Range(„F3“) 125 Then .Visible = False
If Range(„F3“) 100) Then .Visible = False
End With

If (Range(„F2“).Value = 2000) And (Range(„F3“).Value = 1000 Or
Range(„F3“).Value = 500 Or Range(„F3“).Value = 400 Or
Range(„F3“).Value = 250 Or Range(„F3“).Value = 200) Then Call
einblenden1

auch hier kann .value entfallen

Freundliche Grüße

Thomas