Herbers Excel-Forum - das Archiv

Zwei Mal If inersect Ranges nach Worksheet change

Bild

Betrifft: Zwei Mal If inersect Ranges nach Worksheet change
von: Andreas Hanisch

Geschrieben am: 26.02.2008 11:22:41

Hallo Herber Fans,
ich tüftle an einem Problem mit Worksheet change.
Ich habe zwei Bereiche (Range_1 = A1:A20; Range_2 = B1:B20) auf einem Blatt. Wenn ich irgendwo Range_1 anspreche dann soll Aktion_1 ausgeführt werden, wenn ich Range_2 anspreche, soll Aktion_2 ausgeführt werden. Der Code soll immer bei dem Change Ereignis starten
Das ist mein bisheriger Code nach dem Trial and Error Verfahren:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Range("Bereich_1").Address Then
MsgBox "TEST_1"
End If
If Target.Address = Range("Bereich_2").Address Then
MsgBox "TEST_2"
End If
End Sub


Wie kann ich dieses an sich banale Problem lösen? Ist Target. Address der richtige Ansatz, oder doch besser intersect? (If intersect Range_1 then Aktion_1 Else If Intersect...) Das hatte ich auch schon probiert, aber es kamen Debugger Meldungen, die ich nicht lösen konnte.
Dank und Gruß, Andreas

Bild

Betrifft: AW: Zwei Mal If inersect Ranges nach Worksheet cha
von: Lessie
Geschrieben am: 26.02.2008 11:25:45
https://www.herber.de/forum/messages/955167.html

Bild

Betrifft: AW: Zwei Mal If inersect Ranges nach Worksheet change
von: Renee
Geschrieben am: 26.02.2008 11:28:56
Hi Andreas,
Und was soll passieren, wenn beide Bereiche betroffen sind?
z.B. Zeile 2 Inhalte löschen.
GreetZ Renée

Bild

Betrifft: AW: Zwei Mal If inersect Ranges nach Worksheet change
von: Andreas Hanisch

Geschrieben am: 26.02.2008 11:36:03
Hi Renée,
das sollte i.d.R. nicht vorkommen. Wenn Range_1 betroffen, dann soll eine Berechnung auf einem anderen Blatt angestoßen werden.
Wenn Range_2, dann Berechnung auf dem gleichen Blatt. Range_1 und Range_2 sind mit Gültigkeiten versehen die der User wählen kann. D.h. er muß die Eingabe in einer Zelle abschließen, ehe er zur nächsten kann. Aber OK, wenn er eine Markierung auf beide Ranges setzt und löscht, wäre das ja ein Ansprechen beider Ranges. Dann soll nichts passieren.
Gute Frage!
Danke und Gruß, Andreas

Bild

Betrifft: AW: Zwei Mal If inersect Ranges nach Worksheet cha
von: Lessie
Geschrieben am: 26.02.2008 11:42:35
... bei mir funktioniert es:
https://www.herber.de/bbs/user/50189.xls
Gruss

Bild

Betrifft: AW: Zwei Mal If inersect Ranges nach Worksheet cha
von: Lessie
Geschrieben am: 26.02.2008 11:43:38
ups falches Ziel :()

Bild

Betrifft: AW: Zwei Mal If inersect Ranges nach Worksheet change
von: Renee

Geschrieben am: 26.02.2008 11:46:05
Hi Andreas,
Ungefähr so (z.B.):

Private Sub Worksheet_Change(ByVal Target As Range)
If (Not (Intersect(Target, Range("A1:A20")) Is Nothing) And _
Not (Intersect(Target, Range("B1:B20")) Is Nothing)) Or _
Intersect(Target, Range("A1:B20")) Is Nothing Then Exit Sub
Application.EnableEvents = False
If Not (Intersect(Target, Range("A1:A20")) Is Nothing) Then
MsgBox ("Etwas mit A1:A20")
Else
MsgBox ("Etwas mit B1:B20")
End If
Application.EnableEvents = True
End Sub


GreetZ Renée

Bild

Betrifft: AW: Zwei Mal If inersect Ranges nach Worksheet change
von: Andreas Hanisch

Geschrieben am: 26.02.2008 11:52:45
Hi Renée,
you made my day! Der Code funktioniert sehr gut! Wenn ich mir deine Zeilen ansehe, weiß ich, daß ich nicht drauf gekommen wäre. Es gibt mehr zu beachten, als ich ahnte.
Danke Dir für Deinen Einsatz. Habe noch einen schönen Tag.
Gruß aus Berlin, Andreas

 Bild
Excel-Beispiele zum Thema "Zwei Mal If inersect Ranges nach Worksheet change"
Im Change-Ereignis Eingabe in oder Leeren von Zellen erkennen Makroverzweigung im Change-Ereignis
Beispiele zum Einsatz des SelectionChange-Ereignisses