Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Makro nach Kopiervorgang mit Makro auslösen
#1
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 losSmile

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
Antwortento top
#2
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
Antwortento top
#3
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
Antwortento top
#4
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?


Angehängte Dateien
.xlsm   Tor-Statistik.xlsm (Größe: 68,57 KB / Downloads: 11)
Antwortento top
#5
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
Antwortento top
#6
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
Antwortento top
#7
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
Antwortento top
#8
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
Antwortento top
#9
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.


Angehängte Dateien
.xlsm   Tor-Statistik-001.xlsm (Größe: 42,81 KB / Downloads: 4)
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
Antwortento top
#10
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
Antwortento top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste