1.4k Aufrufe
Gefragt in Tabellenkalkulation von Mitglied (439 Punkte)
Hallo zusammen,

das ist wahrscheinlich ganz einfach, aber ich kriege es einfach nicht hin.

Bei einer Änderung in Zelle A1 soll eine Prozedur ausgelöst werden. Also so:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
Call Makro1
End If
End Sub


So weit so gut. Anstelle von "A1" möchte aber einen bestimmten Bereich als Adresse haben, damit das Ereignismakro auch dann noch funktioniert, wenn ich z. B. Zeilen über A1 einfüge.

So etwas wie
If Target.Address = Range("mein_Bereich") Then
geht leider nicht.

Könnt ihr mir helfen?

Danke und Gruß, Heiko1985

2 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Heiko,

wenn das Makro nur in einem bestimmten Bereich ausgeführt werden soll, dann musst du INTERSECT benutzen.

Bei dem folgenden Makro kommt die Messagebox nur, wenn in den mit Range bestimmten Bereichen und Zellen eine Zelle geändert wird:

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("A1:A10,B2,C5:D10")) Is Nothing Then

MsgBox "Hello"

End If

End Sub


oder falls du einen Bereich definiert hast so:

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("Mein_Bereich")) Is Nothing Then

MsgBox "Hello"

End If

End Sub


Gruß

M.O.
0 Punkte
Beantwortet von Mitglied (439 Punkte)
Hat geklappt. Vielen Dank!
...