Discussion:
mehrere change-ereignisse überwachen
(zu alt für eine Antwort)
hotzi
2010-06-18 07:09:09 UTC
Permalink
hallo zusammen,

erst wenn ich den code mit immer mit if not beginne und mit end if
abchließe kann ich nacheinander mehrere ereignisse überwachen. das
übliche konstrukt

If Intersect(Target, Range("A1:F14")) Is Nothing Then Exit Sub
funktioniert bei mehreren bereichen, auf die unterschiedlich zu
reagieren ist nicht. woran kann das liegen.

------------der code, der funktioniert------------

If Not Intersect(Target, Range("A1:F14")) Is Nothing Then
MsgBox "1. Bereich geändert"
End If
'nimmt Formatierungen in den Verfahren vor
If Not Intersect(Target, Range("A15:S1000")) Is Nothing Then
MsgBox "3. Bereich geändert"
End If

'überprüft, ob S- oder E-Verfahren geändert worden sind
If Not Intersect(Target, Range("A15:A1000")) Is Nothing Then
MsgBox "3. Bereich geändert"
End If

End Sub

------------hier der code, der nicht funktioniert------------
Private Sub Worksheet_Change(ByVal Target As Range)

'verhindert Änderungen im kopf
If Intersect(Target, Range("A1:F14")) Is Nothing Then Exit Sub
MsgBox "1. Bereich geändert"

'nimmt Formatierungen in den Verfahren vor
If Intersect(Target, Range("A15:S1000")) Is Nothing Then Exit Sub
MsgBox "2. Bereich geändert"

'überprüft, ob S- oder E-Verfahren geändert worden sind
If Intersect(Target, Range("A15:A1000")) Is Nothing Then Exit Sub
MsgBox "3. Bereich geändert"
end sub

freue mich auf eine antwort klaus
Claus Busch
2010-06-18 09:14:20 UTC
Permalink
Hallo Klaus,
Post by hotzi
------------hier der code, der nicht funktioniert------------
Private Sub Worksheet_Change(ByVal Target As Range)
'verhindert Änderungen im kopf
If Intersect(Target, Range("A1:F14")) Is Nothing Then Exit Sub
MsgBox "1. Bereich geändert"
die Anweisungen in einer Prozedur werden in ihrer Reihenfolge
abgearbeitet. Wenn hier also nichts geändert wird in A1:F14 wird die
Prozedur verlassen und keine weitere Anweisung ausgeführt.


Mit freundlichen Grüssen
Claus Busch
--
Win XP Prof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2
hotzi
2010-06-18 09:36:26 UTC
Permalink
Post by Claus Busch
Hallo Klaus,
Post by hotzi
------------hier der code, der nicht funktioniert------------
Private Sub Worksheet_Change(ByVal Target As Range)
'verhindert nderungen im kopf
If Intersect(Target, Range("A1:F14")) Is Nothing Then Exit Sub
    MsgBox "1. Bereich ge ndert"
die Anweisungen in einer Prozedur werden in ihrer Reihenfolge
abgearbeitet. Wenn hier also nichts ge ndert wird in A1:F14 wird die
Prozedur verlassen und keine weitere Anweisung ausgef hrt.
Mit freundlichen Gr ssen
Claus Busch
--
Win XP Prof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2
hallo claus,

d.h. für mich im muss die anweisung exit sub vermeiden und mit dem if
not/end if-konstrukt arbeiten.

danke klaus
Claus Busch
2010-06-18 09:56:14 UTC
Permalink
Hallo Klaus,
Post by hotzi
d.h. für mich im muss die anweisung exit sub vermeiden und mit dem if
not/end if-konstrukt arbeiten.
du musst auch die Bereiche verändern, denn A1:A1000 und A1:S1000
überschneiden sich ja in Spalte A. Und dann kommt immer die MsgBox für
die zuerst angegebene Anweisung. Bzw. du kannst den Bereich A15:A1000
weglassen, da er ja durch die Überwachung A15:S1000 schon abgedeckt ist.
Oder du machst auch noch einen Bereich 2. Das könnte dann so aussehen:

Set Bereich1 = Range("A1:F14")
Set Bereich2 = Range("B15:S1000")
Set Bereich3 = Range("A15:A1000")

If Not Intersect(Target, Bereich1) Is Nothing Then
MsgBox "1. Bereich wurde geändert"
ElseIf Not Intersect(Target, Bereich2) Is Nothing Then
MsgBox "2. Bereich wurde geändert"
ElseIf Not Intersect(Target, Bereich3) Is Nothing Then
MsgBox "3. Bereich wurde geändert"
End If


Mit freundlichen Grüssen
Claus Busch
--
Win XP Prof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2
hotzi
2010-06-20 15:37:33 UTC
Permalink
hallo claus,
Post by Claus Busch
du musst auch die Bereiche verändern, denn A1:A1000 und A1:S1000
überschneiden sich ja in Spalte A.
danke; die bereiche überschneiden sich deswegen, weil einmal die
änderungen formatiert werden soll und weil weib a1:a1000 auch noch
überwacht werden soll, ob einträge die mit "S " bzw. "E " beginnen
geändert wurden. dann soll das programm anders reagieren.

danke nochmals klaus

Loading...