Microsoft Excel

Herbers Excel/VBA-Archiv

Worksheet_Change bei Ausschneiden und Einfügen

Betrifft: Worksheet_Change bei Ausschneiden und Einfügen von: Robert
Geschrieben am: 01.08.2014 08:31:21

Hallo zusammen,

Ich bin grade ein ein etwas ungewöhnliches Problem geraten und komme irgendwie nicht weiter.
Bei Verwendung von Ausschneiden und Einfügen (Strg + X gefolgt von Strg + V) feuert das Worksheet_Change Event zwei Mal.

Einmal nimmt er wahr, dass sich die ausgeschnittene Zelle ändert, beim zweiten Mal die eingefügte Zelle.

Nun markiere ich mit meiner Funktion geänderte Zellen gelb.
Dazu werden im Workbook_Sheetactivate die Zellwerte in ein Array geschrieben und im Worksheet_Change mit den neuen Werten verglichen.

Mein Problem:
Die eingefügte Zelle wird nicht markiert!
Das liegt daran, dass Excel die Zelländerung der eingefügten Zelle erst im Zweiten Anlauf von Worksheet_Change abfängt, der neue Wert aber bereits nach dem ersten Worksheet_Change Event in der Zelle steht.

Nach jedem Worksheet_Change Event wird das Array der "alten" Werte neu gefüllt.
Da liegt das Problem.
Den beim Ausschneiden und Einfügen werden also zwischen den beiden Change Events die Werte Zwischengespeichert.

Mein Programm denkt also "keine Änderung, der Wert war vorher schon da"

Ich hoffe ich habe das verständlich ausgedrückt.
Hat einer von euch eine Idee das Problem zu lösen?

  

Betrifft: AW: Worksheet_Change bei Ausschneiden und Einfügen von: Nepumuk
Geschrieben am: 01.08.2014 09:09:07

Hallo,

da ich deine Prozedur nicht kenne, kann ich nicht genau sagen ob es dir hilft. Aber hast du schon mal daran gedacht den CutCopyMode abzufragen? So nach dem Muster:

If Application.CutCopyMode = xlCut Then

Gruß
Nepumuk


  

Betrifft: AW: Worksheet_Change bei Ausschneiden und Einfügen von: Robert
Geschrieben am: 01.08.2014 09:25:21

Hallo Nepumuk,

Interessanter Ansatz, hatte ich nicht auf dem Schirm, werde ich mir definitiv merken.

Leider hilft mir das insofern nicht weiter, dass der xlCut zwar Wahr ist, wenn ich STRG + X drücke,
das Worksheet_Change Ereignis aber erst beim Einfügen triggert, wenn xlCut schon wieder auf False steht (und dann läuft es eben zweimal hintereinander).

Warum Excel Löschen von Zelle A und Einfügen in Zelle B als zwei seperate _Change Prozesse sieht kann ich ja noch nachvollziehen. Nicht aber, dass beide Aktionen bereits nach dem ersten _Change Ereignis fertig durchgeführt sind, im Event aber nur die Zelle A als Target aufgeführt wird.
Das Zweite _Change Event wird nachgelagert mit Zelle B als Target getriggert, da ist das Einfügen aber bereits komplett vorbei und mein Programm kann eben keine Änderungen erkennen.


Gibt es ein Event wie "Wenn du fertig bist mit Rechnen, dann"?
Ich Möchte das SheetActivate ja eigentlich erst triggern, nachdem sämtliche Makros durchgelaufen sind.

Viele Grüße
Robert


  

Betrifft: AW: Worksheet_Change bei Ausschneiden und Einfügen von: Werner
Geschrieben am: 01.08.2014 11:42:41

Hallo Robert,


schon mal mit dem Worksheet calculate Ereignis probiert?

Gruß Werner


  

Betrifft: AW: Worksheet_Change bei Ausschneiden und Einfügen von: Robert
Geschrieben am: 01.08.2014 13:03:16

Hallo Werner,

auch das habe ich versucht, habe es aber nichts zustande gebracht.

Habe es jetzt mit einem Flag in Worksheet_Selectionchange Ereignis gelöst.
Falls xlCut = True, wird nach dem Worksheet_Change Ereignis das WerteArray nicht erneuert.

Vielen Dank an Nepumuk für den entscheidenden Hinweis :)

Viele Grüße
Robert


 

Beiträge aus den Excel-Beispielen zum Thema "Worksheet_Change bei Ausschneiden und Einfügen"