2.1k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo ihr Lieben,

ich habe ein Makro das mit folgender Zeile beginnt:

Private Sub Worksheet_Change(ByVal Target As Range)


Das funktioniert auch alles, ich würde nur gern einschränken auf
welche Zellen sich das bezieht. Bisher mache ich das so:

If Intersect(Target, Range("A3:J50")) Is Nothing Then Exit
Sub


Es könnte viel schneller sein, wenn diese "Einschränkung" schon in
der ersten Codezeile wäre.
Gibt es da Ideen?

Beste Grüße,
critchm

7 Antworten

0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Christian,

ich sehe nicht Deine erste Code Zeile. Ich hätte die Zeile als erstes genommen.

Gruß Hajo
0 Punkte
Beantwortet von
Hallo Hajo,
ich weiß nicht wer Christian ist, aber danke für deine Antwort.

Du hast mich offensichtlich falsch verstanden, aber ich habe mich wohl auch etwas umständlich ausgedrückt.

Wenn ich irgendetwas in meinem Worksheet ändere, wird dieses Makro ausgeführt.

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A3:J50")) Is Nothing Then Exit
Sub
...


Das führt aber zu Verzögerungen, weil das Makro auch ausgeführt wird wenn die Änderung nicht im Bereich A3:J50 ist.
Deswegen meine Frage ob man diese Einschränkung irgendwie in die Zeile "Private Sub Worksheet_Change...." bringen kann, sodass das Makro gar nicht erst aufgerufen wird, wenn die Änderung nicht in dem angegebenen Bereich stattgefunden hat.

Besten Dank im Voraus,
critchm
0 Punkte
Beantwortet von rudi4ad Mitglied (167 Punkte)
Hallo critchm,
die Ausführung dieser einen Anweisung geht so schnell, dass du es garnicht merken kannst. Sollte es zu Verzögerungen kommen, dann liegt die Ursache woanders.
0 Punkte
Beantwortet von
Hallo Rudi4ad,

heißt das es geht nicht?
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo critchm,

teste mal, ob es hiermit schneller geht

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A3:J50")) Is Nothing Then
'hier Dein Code
End If
End Sub


Gruß
Rainer
0 Punkte
Beantwortet von rudi4ad Mitglied (167 Punkte)
Hallo critchm,
so wie du dir das vorstellst geht es nicht, richtig.
Das Change-Ereignis wird immer ausgeführt bei Veränderung. Davor gibt es kein Ereignis, welches prüft, ob change aktiv werden muss.
0 Punkte
Beantwortet von
Danke! Ist zwar schade, aber ich habe auch nur nach
Optimierungspotential gesucht.
...