Clever-Excel-Forum

Normale Version: Makro nach Kopiervorgang mit Makro auslösen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo zusammen,

ich habe heute eine (wahrscheinlich/hoffentlich) simple Frage, bei welcher ich aber gerade nicht weiterkomme.

Ich nutze aktuell für meinen Code in VBA das "Sub Worksheet_Change(ByVal Target As Range)"
Funktioniert auch super, sobald ich in den Zellen entsprechend etwas ändere, geht das im Tabellenblatt hinterlegte Makro los :)

Mein kleines Problem ist jetzt folgendes:
Kopiere ich etwas per Makro in das Tabellenblatt, registriert Excel dies wohl nicht als Änderung, und löst das im Tabellenblatt hinterlegte Makro nicht aus. Ich muss dann nachdem der Kopiervorgang per Makro abgeschlossen ist erst in irgendeiner Zelle etwas eingeben und mit Enter bestätigen damit es funktioniert. Das finde ich aber irgendwie doof...

Wie, bzw. was muss ich an meinem Code anpassen, dass er das Makro eben auch auslöst, sobald ich wiederum per Makro etwas in das Tabellenblatt kopiert habe?

Danke und Gruß
Sebbo
Hallo Sebbo,

(09.09.2020, 22:15)Sebbo schrieb: [ -> ]Wie, bzw. was muss ich an meinem Code anpassen, dass er das Makro eben auch auslöst, sobald ich wiederum per Makro etwas in das Tabellenblatt kopiert habe?

kommentiere Zeile 9 mal aus. Wink

Im Ernst: Das Change-Ereignis springt auch bei Einfügeaktionen per Makro an.  Blush

Gruß Uw
Hi Uwe,

erst mal danke für deine Antwort! Ich bin jetzt leider gerade auf der Arbeit, aber das im Arbeitsblatt hinterlegte Makro löst tatsächlich erst aus, wenn ich in einer Zelle etwas eingebe. Allein vom Kopiervorgang eines anderen Makros tut sich da nix.

Ich kann ja heute abend mal eine Beispieldatei hochladen.

Dir einen schönen Tag.

Viele Grüße
Sebbo
So, hier mal die Beispieldatei, damit man sehen kann was ich meine.

Wenn ich das Makro "Kopieren" ausführe, wird zwar die Tabelle "Übersicht" gefüllt, die Tabelle "Tor-Statistik" aber nicht.

Hier muss ich erst in einer beliebigen Zelle etwas eingeben, damit er diese auch füllt.

Wer weiß Rat, was ich tun muss, damit er beide Tabellen sofort befüllt, sobald ich den Button "Kopieren" drücke?
Hallo Sebbo,

da hatte ich mich leicht vertan: nicht die Zeile 9, sondern 3 des Codes musst Du auskommentieren. Blush
Application.EnableEvents = False
schaltet halt alle Ereignisse aus. Wink

Gruß Uwe
Hi Uwe,

knapp daneben ist halt auch vorbei :D
Spaß beiseite. Wenn ich die Zeile Application.EnableEvents = False auskommentiere, muss ich immer noch etwas in eine beliebige Zelle schreiben, dass er mir die Änderung durchführt. Der einzige zusätzliche Effekt ist jetzt, dass mir dann Excel umgehend abstürzt (ich habs jetzt mehrmals ausprobiert).

Leider bin ich zuviel Laie, als dass ich das verstehe. Hast du noch eine Idee?

Viele Grüße
Sebbo
Hallo Sebbo,

wenn Du das auskommentierst, springt das Change-Ereignis mit jedem Eintrag in die Tor-Statistik per Code an, weshalb sich Dein Excel dann aufhängt.
Ich kann aber auch keine Änderung im Sheet bei manuellem Eintrag feststellen, obwohl das Change-Ereignis auch da anspringt.

Gruß Uwe
Ok danke für dein Feedback Uwe!

Dann stell ich die Frage mal in einem anderen Forum. Vielleicht hat da noch jemand eine Idee wie ich das gelöst bekomme.

Viele Grüße
Sebbo
Hallöchen,

ich würde den "Änderungs"-Code beim Change-Ereignis aus auslagern und dann im Change-Ereignis und im Kopieren aufrufen. Im aufgerufenen Code benötigst Du dann das Enablen... usw. nicht.
Hallo Sebbo,

Zitat:Wenn ich die Zeile Application.EnableEvents = False auskommentiere...

hast du auch das richtige Application.EnableEvents = False auskommentiert, d.h. im richtigen Sub ?

In deinem Sub Kopieren schaltest du am Anfang über Application.EnableEvents = False die Events aus. Und deshalb kann das Worksheet_Change-Ereignis im Tabellenblatt "Tor-Statistik" während des Kopiervorganges natürlich nicht anspringen.

Wenn du im Sub Kopieren das Application.EnableEvents=False auskommentierst bzw, wegläßt, dann reagiert auch das Worksheet_Change-Event.
Allerdings bei jedem einzelnen Schleifendurchlauf , so dass das Kopieren-Makro entsprechend langsam läuft und du zugucken kannst wie die Werte eingetragen werden
(Aber abstürzen sollte da eigentlich nichts…)

Wenn du das Application.EnableEvents = False im Private Sub Worksheet_Change- entfernst, stürzt der Rechner natürlich ab weil er dann ja in eine Endlosschleife läuft.
(Und eigentlich gehört das Worksheet-Change-Ereignis auch etwas eingegrenzt, so dass es nicht auf dem gesamten Tabellenblatt anspringt, sondern nur bei Änderungen (=> Eingaben) in einem bestimmten Bereich)

Gruß
Fred
Seiten: 1 2