Makro beim Zellenwechsel auf einen Bereich begrenzen

In der Ausgabe 7/2000 haben Sie eine Makro-Ausführung beim Wechsel der aktiven Zelle vorgestellt. Kann ich dieses Makro auch auf einen bestimmten Bereich einer Tabelle beschränken, so dass das Makro nur dann abläuft, wenn sich der Cursor zum Beispiel im Bereich D4:E20 befindet?

Ja, das ist praktisch möglich. Allerdings können Sie nicht das Ausführen des Makros selbst verhindern, weil es als Prozedur für das Ereignis »SelectionChange« bei jeder Änderung der aktiven Zelle das kleine Programm in Gang setzt.

Stattdessen müssen Sie die Bedingungen für die Makro-Ausführung in das Makro selbst integrieren. Dort prüfen Sie zunächst mit zwei IF-Anweisungen die aktuelle Cursorposition. Nur wenn sich der Cursor im geforderten Bereich befindet, werden die anderen Anweisungen des Makros ausgeführt.
Dazu müssen sich alle eigentlichen Anweisungen des Makros zwischen der Anweisung »IF« und der zugehörigen Anweisung »END IF« befinden. Ein Beispiel für die Ereignisprozedur sieht folgendermaßen aus:



Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If ActiveCell.Column >=4 And ActiveCell.Column <= 5
Then
If ActiveCell.Row >=4 And ActiveCell.Row <= 20 Then
...(weitere Anweisungen)
End If
End If
End Sub



Das Makro prüft in diesem Beispiel zuerst einmal, ob die aktuelle Spalte größer oder gleich 4 und kleiner oder gleich 5 ist. Danach prüft es, ob die aktuelle Zeile zwischen 4 und 20 liegt. Nur wenn beide Bedingungen erfüllt sind, kommen die weiteren Anweisungen zur Ausführung.

Bei dem Einsatz dieses Makros müssen Sie noch beachten, dass das Ausführen der Anweisungen nicht von der bisher aktiven Zelle, sondern von der aktiven Zelle nach dem Zellwechsel abhängig ist.