Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1904to1908
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Problem Zwischenablage, 2 Excel-Makros

Problem Zwischenablage, 2 Excel-Makros
16.11.2022 10:09:05
Daniel

Hallo,

ich habe immer mal wieder folgendes Problem:

Bei zwei unabhängig geöffneten Excelinstanzen kommt es manchmal zu Schreibfehlern da der Zwischenspeicher für alle Excelinstanzen gleich ist und bei 2 Makros die gleichzeitig laufen kann es dann eine überschneidung mit der Zwischenablage geben.

Beispiel:

Um Berechnung zu beschleunigen öffne ich gerne 2 mal Excel.
Beim 1. Excel starte ich dann die erste Berechnung via Makro die 10 Minuten dauert und
beim 2. Excel starte ich dann die zweite Berechnung via Marko die 10 Minuten dauert.

Dadurch spare ich gute 9 Minuten Berechnungszeit da alle 4 Prozessoren dann genutzt werden und nicht nur zwei des Computers. Habe ich nun Berechnungen die viel mit Copy und Paste arbeiten wird der Zwischenspeicher nicht getrennt genutzt von den Makros und das ist ein Problem. Gibt es da irgendwie eine Lösung?

Ihr kennt mit Sicherheit das Problem andertweitig: Eine Makroberechnung läuft im Hintergrund (wo auch Copy und Paste benutzt wird) und Ihr wollte z.b. in einem anderen Programm etwas mit strg+C kopieren. Was dann passieren kann ist dass Ihr auf einmal etwas einfügt mit strg+v was Excel im Makro zwischengespeichert hat und nicht das was Ihr eigentlich kopiert habt.

Ich hoffe jemand hat eine Lösung.

nach oben  nach unten

Betrifft: AW: Workaround
Hallo Frank,
die Makros in Makros ohne Copy+Paste umschreiben ( und ohne Select u. Activate).
Du könntest sie hier zeigen.
Gruß Gerd

nach oben  nach unten

Betrifft: AW: Workaround
Hallo Gerd,

das hört sich interessant an. Kannst Du mal ein Beispiel geben wie Du so etwas umschreiben könntest an diesem Beispiel ohne select/copy etc.?

Windows("Zeilekopieren").Activate
Sheets("Tabelle1").Select
Range("A1:A3").Select
Selection.Copy

Sheets("hiereinfügen").Select
Range("A1").Select
ActiveSheet.Paste

So wie ich Dich verstanden habe, schreibst Du dann ein Makro im Makro? Daniel meinte schon es gäbe da eine Lösung mit .value?

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Hi,

und zum Workaraound noch die Idee, nich nur den Code, sondern auch Bsp-DateiEN zu zeigen.

Ciao
Thorsten

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Hi
Was überträgst du denn? Nur Werte?
Dann könntest du statt

Quelle.Copy
Ziel.PasteSpecial
Auch das verwenden um den Zwischenspeicher zu umgehen

Ziel.value = Quelle.value
Allerdings muss man hier Ziel und Quelle gleich groß angeben, linke obere Ecke beim Ziel reicht nicht.

Gruß Daniel

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Hallo Daniel,

Es sind leider sehr viele Werte wie man sieht. Ich befürchte da kommt man mit .value nicht weit, oder?

ja, es sind immer nur Werte. Hier mal ein Beispiel:

Windows("350000Zeilen.xlsb").Activate
Sheets("Tabelle1").Select
Range("a1:f350000").Select
Selection.Copy

Windows("hiersollensierein.xlsb").Activate
Sheets("350000Zeilen").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Allein durchgängig so sparst du schon schätzungsweise ca. 9 Minuten.


Workbooks("hiersollensierein.xlsb").Activate
Workbooks("350000Zeilen.xlsb").Activate
Sheets("Tabelle1").Range("a1:f350000").Copy
Workbooks("hiersollensierein.xlsb").Sheets("350000Zeilen").Range("A1").PasteSpecial Paste:=xlPasteValues
Gruß Gerd

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Hallo Gerd, also die Zeit für die Berechnung resultiert aus den Formeln in der Datei, nicht durch den Kopiervorgang. Der Dauert nur 0.5 Sekunden.
Das Grundproblem ist das kopieren ansich, da damit der Zwischenspeicher besetzt ist und bei 2 Excel-Instanzen gleichzeitig auf einem PC kann es dann passieren,
dass die einen Werte aus Excel-Instanz 1 in Excel-Instanz 2 kopiert werden, da nur EIN Zwischenspeicher benutzt wird.

Danke Dir erstmal!

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Musst du ausprobieren.
Ggf halt nicht den ganzen Block auf einmal über tragen, sondern spaltenweise.

Wenn du noch auf dem Niveau "unbearbeiteter Recordercode" programmierst, solltest du dir erstmal das hier durchlesen und dann deinen Code überarbeiten:
https://online-excel.de/excel/grusel_vba.php?f=6
Und ggf auch
https://online-excel.de/excel/grusel_vba.php?f=2 Abschnitt "Performance"

Weiterhin google mal nach "GetMoreSpeed", auch das könnte helfen, von den 10 Minuten pro Makro runter zu kommen, was dann vielleicht die sequentielle Abarbeitung möglich macht.

Und wie gesagt, beschreibe die Aufgabe, zeige deinen Code (bitte erst nachdem du die Tipps von Online-Excel umgesetzt hast), lade Breispieldateien hoch, dann können wir nochmal drüberschauen, ob man die Aufgabe nicht anders und schneller lösen kann.

Gruß Daniel

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Also das war schon einmal ein klasse Tip:

Sheets("Tabelle1").Range("C29").Value = Sheets("Tabelle2").Range("C7").Value

Damit kann ich schon mal 80% des Codes von .copy und select befreien da es nur wenige Zellen sind die so "kopiert" werden sollen.

Bei den anderen 2 große Kopiervorgängen funktioniert das leider nicht (einmal 350000 x 6 Zeilen kopieren) und einmal eine gefilterte Liste kopieren da hier die Werte nicht immer gleich viele sind (z.b. mal 100 Werte zum kopieren, dann wieder nur 90 da durch den Filter unterschiedlich viele kommen).

Die Gefilterte Liste könnte ich noch umgehen mit geschicktem Programmieren und dann evtl. mit .value arbeiten.

Wie gesagt, das Problem ist nicht die Bearbeitungszeit (das sind Formelberechnungen) sondern das unterschiedliche Dinge in der Zwischenablage liegen und Excel dadurch bei 2 Instanzen Probleme bekommen kann. Danke Erstmal!

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Die gefilterte Liste solltest du vor dem Filtern nach der Spalte mit dem Filterkriterium sortieren, so dass alle sichtbaren Zeilen möglichst einen einzigen Block ohne Unterbrechung bilden.
Das macht für Excel das kopieren einfacher und es geht schneller.
Das Kopieren der Zeilen 1+3 ohne die 2 ist für Excel wesentlich aufwendiger als das kopieren der Zeilen 1-3 (ohne Lücke)
Das Sortieren geht in Excel sehr schnell, das sollte man ausnutzen um Excel die Arbeit zu erleichtern.

Wenn die Liste so sortiert ist, dass der zu übertragende Zellblock lückenlos ist, könntest du auch wieder mit .Value = .Value über tragen, um die Zwischenablage zu vermeiden.

Wenn die Rechenzeit durch vorhandene Formeln verursacht wird und es nicht erforderlich ist, dass diese während des Makrolaufs ständig neu berechnet werden, kannst du ja die automatische Neuberechnung auch ausschalten

Gruß Daniel

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Workaround
16.11.2022 10:09:05
Daniel
Hallo Frank,
die Makros in Makros ohne Copy+Paste umschreiben ( und ohne Select u. Activate).
Du könntest sie hier zeigen.
Gruß Gerd

nach oben  nach unten

Betrifft: AW: Workaround
Hallo Gerd,

das hört sich interessant an. Kannst Du mal ein Beispiel geben wie Du so etwas umschreiben könntest an diesem Beispiel ohne select/copy etc.?

Windows("Zeilekopieren").Activate
Sheets("Tabelle1").Select
Range("A1:A3").Select
Selection.Copy

Sheets("hiereinfügen").Select
Range("A1").Select
ActiveSheet.Paste

So wie ich Dich verstanden habe, schreibst Du dann ein Makro im Makro? Daniel meinte schon es gäbe da eine Lösung mit .value?

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Hi,

und zum Workaraound noch die Idee, nich nur den Code, sondern auch Bsp-DateiEN zu zeigen.

Ciao
Thorsten

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Hi
Was überträgst du denn? Nur Werte?
Dann könntest du statt

Quelle.Copy
Ziel.PasteSpecial
Auch das verwenden um den Zwischenspeicher zu umgehen

Ziel.value = Quelle.value
Allerdings muss man hier Ziel und Quelle gleich groß angeben, linke obere Ecke beim Ziel reicht nicht.

Gruß Daniel

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Hallo Daniel,

Es sind leider sehr viele Werte wie man sieht. Ich befürchte da kommt man mit .value nicht weit, oder?

ja, es sind immer nur Werte. Hier mal ein Beispiel:

Windows("350000Zeilen.xlsb").Activate
Sheets("Tabelle1").Select
Range("a1:f350000").Select
Selection.Copy

Windows("hiersollensierein.xlsb").Activate
Sheets("350000Zeilen").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Allein durchgängig so sparst du schon schätzungsweise ca. 9 Minuten.


Workbooks("hiersollensierein.xlsb").Activate
Workbooks("350000Zeilen.xlsb").Activate
Sheets("Tabelle1").Range("a1:f350000").Copy
Workbooks("hiersollensierein.xlsb").Sheets("350000Zeilen").Range("A1").PasteSpecial Paste:=xlPasteValues
Gruß Gerd

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Hallo Gerd, also die Zeit für die Berechnung resultiert aus den Formeln in der Datei, nicht durch den Kopiervorgang. Der Dauert nur 0.5 Sekunden.
Das Grundproblem ist das kopieren ansich, da damit der Zwischenspeicher besetzt ist und bei 2 Excel-Instanzen gleichzeitig auf einem PC kann es dann passieren,
dass die einen Werte aus Excel-Instanz 1 in Excel-Instanz 2 kopiert werden, da nur EIN Zwischenspeicher benutzt wird.

Danke Dir erstmal!

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Musst du ausprobieren.
Ggf halt nicht den ganzen Block auf einmal über tragen, sondern spaltenweise.

Wenn du noch auf dem Niveau "unbearbeiteter Recordercode" programmierst, solltest du dir erstmal das hier durchlesen und dann deinen Code überarbeiten:
https://online-excel.de/excel/grusel_vba.php?f=6
Und ggf auch
https://online-excel.de/excel/grusel_vba.php?f=2 Abschnitt "Performance"

Weiterhin google mal nach "GetMoreSpeed", auch das könnte helfen, von den 10 Minuten pro Makro runter zu kommen, was dann vielleicht die sequentielle Abarbeitung möglich macht.

Und wie gesagt, beschreibe die Aufgabe, zeige deinen Code (bitte erst nachdem du die Tipps von Online-Excel umgesetzt hast), lade Breispieldateien hoch, dann können wir nochmal drüberschauen, ob man die Aufgabe nicht anders und schneller lösen kann.

Gruß Daniel

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Also das war schon einmal ein klasse Tip:

Sheets("Tabelle1").Range("C29").Value = Sheets("Tabelle2").Range("C7").Value

Damit kann ich schon mal 80% des Codes von .copy und select befreien da es nur wenige Zellen sind die so "kopiert" werden sollen.

Bei den anderen 2 große Kopiervorgängen funktioniert das leider nicht (einmal 350000 x 6 Zeilen kopieren) und einmal eine gefilterte Liste kopieren da hier die Werte nicht immer gleich viele sind (z.b. mal 100 Werte zum kopieren, dann wieder nur 90 da durch den Filter unterschiedlich viele kommen).

Die Gefilterte Liste könnte ich noch umgehen mit geschicktem Programmieren und dann evtl. mit .value arbeiten.

Wie gesagt, das Problem ist nicht die Bearbeitungszeit (das sind Formelberechnungen) sondern das unterschiedliche Dinge in der Zwischenablage liegen und Excel dadurch bei 2 Instanzen Probleme bekommen kann. Danke Erstmal!

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Die gefilterte Liste solltest du vor dem Filtern nach der Spalte mit dem Filterkriterium sortieren, so dass alle sichtbaren Zeilen möglichst einen einzigen Block ohne Unterbrechung bilden.
Das macht für Excel das kopieren einfacher und es geht schneller.
Das Kopieren der Zeilen 1+3 ohne die 2 ist für Excel wesentlich aufwendiger als das kopieren der Zeilen 1-3 (ohne Lücke)
Das Sortieren geht in Excel sehr schnell, das sollte man ausnutzen um Excel die Arbeit zu erleichtern.

Wenn die Liste so sortiert ist, dass der zu übertragende Zellblock lückenlos ist, könntest du auch wieder mit .Value = .Value über tragen, um die Zwischenablage zu vermeiden.

Wenn die Rechenzeit durch vorhandene Formeln verursacht wird und es nicht erforderlich ist, dass diese während des Makrolaufs ständig neu berechnet werden, kannst du ja die automatische Neuberechnung auch ausschalten

Gruß Daniel

Anzeige
AW: Workaround
16.11.2022 10:09:05
Daniel
Hallo Gerd,

das hört sich interessant an. Kannst Du mal ein Beispiel geben wie Du so etwas umschreiben könntest an diesem Beispiel ohne select/copy etc.?

Windows("Zeilekopieren").Activate
Sheets("Tabelle1").Select
Range("A1:A3").Select
Selection.Copy

Sheets("hiereinfügen").Select
Range("A1").Select
ActiveSheet.Paste

So wie ich Dich verstanden habe, schreibst Du dann ein Makro im Makro? Daniel meinte schon es gäbe da eine Lösung mit .value?

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Hi,

und zum Workaraound noch die Idee, nich nur den Code, sondern auch Bsp-DateiEN zu zeigen.

Ciao
Thorsten

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Hi
Was überträgst du denn? Nur Werte?
Dann könntest du statt

Quelle.Copy
Ziel.PasteSpecial
Auch das verwenden um den Zwischenspeicher zu umgehen

Ziel.value = Quelle.value
Allerdings muss man hier Ziel und Quelle gleich groß angeben, linke obere Ecke beim Ziel reicht nicht.

Gruß Daniel

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Hallo Daniel,

Es sind leider sehr viele Werte wie man sieht. Ich befürchte da kommt man mit .value nicht weit, oder?

ja, es sind immer nur Werte. Hier mal ein Beispiel:

Windows("350000Zeilen.xlsb").Activate
Sheets("Tabelle1").Select
Range("a1:f350000").Select
Selection.Copy

Windows("hiersollensierein.xlsb").Activate
Sheets("350000Zeilen").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Allein durchgängig so sparst du schon schätzungsweise ca. 9 Minuten.


Workbooks("hiersollensierein.xlsb").Activate
Workbooks("350000Zeilen.xlsb").Activate
Sheets("Tabelle1").Range("a1:f350000").Copy
Workbooks("hiersollensierein.xlsb").Sheets("350000Zeilen").Range("A1").PasteSpecial Paste:=xlPasteValues
Gruß Gerd

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Hallo Gerd, also die Zeit für die Berechnung resultiert aus den Formeln in der Datei, nicht durch den Kopiervorgang. Der Dauert nur 0.5 Sekunden.
Das Grundproblem ist das kopieren ansich, da damit der Zwischenspeicher besetzt ist und bei 2 Excel-Instanzen gleichzeitig auf einem PC kann es dann passieren,
dass die einen Werte aus Excel-Instanz 1 in Excel-Instanz 2 kopiert werden, da nur EIN Zwischenspeicher benutzt wird.

Danke Dir erstmal!

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Musst du ausprobieren.
Ggf halt nicht den ganzen Block auf einmal über tragen, sondern spaltenweise.

Wenn du noch auf dem Niveau "unbearbeiteter Recordercode" programmierst, solltest du dir erstmal das hier durchlesen und dann deinen Code überarbeiten:
https://online-excel.de/excel/grusel_vba.php?f=6
Und ggf auch
https://online-excel.de/excel/grusel_vba.php?f=2 Abschnitt "Performance"

Weiterhin google mal nach "GetMoreSpeed", auch das könnte helfen, von den 10 Minuten pro Makro runter zu kommen, was dann vielleicht die sequentielle Abarbeitung möglich macht.

Und wie gesagt, beschreibe die Aufgabe, zeige deinen Code (bitte erst nachdem du die Tipps von Online-Excel umgesetzt hast), lade Breispieldateien hoch, dann können wir nochmal drüberschauen, ob man die Aufgabe nicht anders und schneller lösen kann.

Gruß Daniel

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Also das war schon einmal ein klasse Tip:

Sheets("Tabelle1").Range("C29").Value = Sheets("Tabelle2").Range("C7").Value

Damit kann ich schon mal 80% des Codes von .copy und select befreien da es nur wenige Zellen sind die so "kopiert" werden sollen.

Bei den anderen 2 große Kopiervorgängen funktioniert das leider nicht (einmal 350000 x 6 Zeilen kopieren) und einmal eine gefilterte Liste kopieren da hier die Werte nicht immer gleich viele sind (z.b. mal 100 Werte zum kopieren, dann wieder nur 90 da durch den Filter unterschiedlich viele kommen).

Die Gefilterte Liste könnte ich noch umgehen mit geschicktem Programmieren und dann evtl. mit .value arbeiten.

Wie gesagt, das Problem ist nicht die Bearbeitungszeit (das sind Formelberechnungen) sondern das unterschiedliche Dinge in der Zwischenablage liegen und Excel dadurch bei 2 Instanzen Probleme bekommen kann. Danke Erstmal!

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Die gefilterte Liste solltest du vor dem Filtern nach der Spalte mit dem Filterkriterium sortieren, so dass alle sichtbaren Zeilen möglichst einen einzigen Block ohne Unterbrechung bilden.
Das macht für Excel das kopieren einfacher und es geht schneller.
Das Kopieren der Zeilen 1+3 ohne die 2 ist für Excel wesentlich aufwendiger als das kopieren der Zeilen 1-3 (ohne Lücke)
Das Sortieren geht in Excel sehr schnell, das sollte man ausnutzen um Excel die Arbeit zu erleichtern.

Wenn die Liste so sortiert ist, dass der zu übertragende Zellblock lückenlos ist, könntest du auch wieder mit .Value = .Value über tragen, um die Zwischenablage zu vermeiden.

Wenn die Rechenzeit durch vorhandene Formeln verursacht wird und es nicht erforderlich ist, dass diese während des Makrolaufs ständig neu berechnet werden, kannst du ja die automatische Neuberechnung auch ausschalten

Gruß Daniel

Anzeige
AW: Problem Zwischenablage, 2 Excel-Makros
16.11.2022 10:09:05
Daniel
Hi,

und zum Workaraound noch die Idee, nich nur den Code, sondern auch Bsp-DateiEN zu zeigen.

Ciao
Thorsten

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Hi
Was überträgst du denn? Nur Werte?
Dann könntest du statt

Quelle.Copy
Ziel.PasteSpecial
Auch das verwenden um den Zwischenspeicher zu umgehen

Ziel.value = Quelle.value
Allerdings muss man hier Ziel und Quelle gleich groß angeben, linke obere Ecke beim Ziel reicht nicht.

Gruß Daniel

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Hallo Daniel,

Es sind leider sehr viele Werte wie man sieht. Ich befürchte da kommt man mit .value nicht weit, oder?

ja, es sind immer nur Werte. Hier mal ein Beispiel:

Windows("350000Zeilen.xlsb").Activate
Sheets("Tabelle1").Select
Range("a1:f350000").Select
Selection.Copy

Windows("hiersollensierein.xlsb").Activate
Sheets("350000Zeilen").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Allein durchgängig so sparst du schon schätzungsweise ca. 9 Minuten.


Workbooks("hiersollensierein.xlsb").Activate
Workbooks("350000Zeilen.xlsb").Activate
Sheets("Tabelle1").Range("a1:f350000").Copy
Workbooks("hiersollensierein.xlsb").Sheets("350000Zeilen").Range("A1").PasteSpecial Paste:=xlPasteValues
Gruß Gerd

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Hallo Gerd, also die Zeit für die Berechnung resultiert aus den Formeln in der Datei, nicht durch den Kopiervorgang. Der Dauert nur 0.5 Sekunden.
Das Grundproblem ist das kopieren ansich, da damit der Zwischenspeicher besetzt ist und bei 2 Excel-Instanzen gleichzeitig auf einem PC kann es dann passieren,
dass die einen Werte aus Excel-Instanz 1 in Excel-Instanz 2 kopiert werden, da nur EIN Zwischenspeicher benutzt wird.

Danke Dir erstmal!

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Musst du ausprobieren.
Ggf halt nicht den ganzen Block auf einmal über tragen, sondern spaltenweise.

Wenn du noch auf dem Niveau "unbearbeiteter Recordercode" programmierst, solltest du dir erstmal das hier durchlesen und dann deinen Code überarbeiten:
https://online-excel.de/excel/grusel_vba.php?f=6
Und ggf auch
https://online-excel.de/excel/grusel_vba.php?f=2 Abschnitt "Performance"

Weiterhin google mal nach "GetMoreSpeed", auch das könnte helfen, von den 10 Minuten pro Makro runter zu kommen, was dann vielleicht die sequentielle Abarbeitung möglich macht.

Und wie gesagt, beschreibe die Aufgabe, zeige deinen Code (bitte erst nachdem du die Tipps von Online-Excel umgesetzt hast), lade Breispieldateien hoch, dann können wir nochmal drüberschauen, ob man die Aufgabe nicht anders und schneller lösen kann.

Gruß Daniel

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Also das war schon einmal ein klasse Tip:

Sheets("Tabelle1").Range("C29").Value = Sheets("Tabelle2").Range("C7").Value

Damit kann ich schon mal 80% des Codes von .copy und select befreien da es nur wenige Zellen sind die so "kopiert" werden sollen.

Bei den anderen 2 große Kopiervorgängen funktioniert das leider nicht (einmal 350000 x 6 Zeilen kopieren) und einmal eine gefilterte Liste kopieren da hier die Werte nicht immer gleich viele sind (z.b. mal 100 Werte zum kopieren, dann wieder nur 90 da durch den Filter unterschiedlich viele kommen).

Die Gefilterte Liste könnte ich noch umgehen mit geschicktem Programmieren und dann evtl. mit .value arbeiten.

Wie gesagt, das Problem ist nicht die Bearbeitungszeit (das sind Formelberechnungen) sondern das unterschiedliche Dinge in der Zwischenablage liegen und Excel dadurch bei 2 Instanzen Probleme bekommen kann. Danke Erstmal!

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Die gefilterte Liste solltest du vor dem Filtern nach der Spalte mit dem Filterkriterium sortieren, so dass alle sichtbaren Zeilen möglichst einen einzigen Block ohne Unterbrechung bilden.
Das macht für Excel das kopieren einfacher und es geht schneller.
Das Kopieren der Zeilen 1+3 ohne die 2 ist für Excel wesentlich aufwendiger als das kopieren der Zeilen 1-3 (ohne Lücke)
Das Sortieren geht in Excel sehr schnell, das sollte man ausnutzen um Excel die Arbeit zu erleichtern.

Wenn die Liste so sortiert ist, dass der zu übertragende Zellblock lückenlos ist, könntest du auch wieder mit .Value = .Value über tragen, um die Zwischenablage zu vermeiden.

Wenn die Rechenzeit durch vorhandene Formeln verursacht wird und es nicht erforderlich ist, dass diese während des Makrolaufs ständig neu berechnet werden, kannst du ja die automatische Neuberechnung auch ausschalten

Gruß Daniel

Anzeige
AW: Problem Zwischenablage, 2 Excel-Makros
16.11.2022 10:09:05
Daniel
Hi
Was überträgst du denn? Nur Werte?
Dann könntest du statt

Quelle.Copy
Ziel.PasteSpecial
Auch das verwenden um den Zwischenspeicher zu umgehen

Ziel.value = Quelle.value
Allerdings muss man hier Ziel und Quelle gleich groß angeben, linke obere Ecke beim Ziel reicht nicht.

Gruß Daniel

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Hallo Daniel,

Es sind leider sehr viele Werte wie man sieht. Ich befürchte da kommt man mit .value nicht weit, oder?

ja, es sind immer nur Werte. Hier mal ein Beispiel:

Windows("350000Zeilen.xlsb").Activate
Sheets("Tabelle1").Select
Range("a1:f350000").Select
Selection.Copy

Windows("hiersollensierein.xlsb").Activate
Sheets("350000Zeilen").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Allein durchgängig so sparst du schon schätzungsweise ca. 9 Minuten.


Workbooks("hiersollensierein.xlsb").Activate
Workbooks("350000Zeilen.xlsb").Activate
Sheets("Tabelle1").Range("a1:f350000").Copy
Workbooks("hiersollensierein.xlsb").Sheets("350000Zeilen").Range("A1").PasteSpecial Paste:=xlPasteValues
Gruß Gerd

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Hallo Gerd, also die Zeit für die Berechnung resultiert aus den Formeln in der Datei, nicht durch den Kopiervorgang. Der Dauert nur 0.5 Sekunden.
Das Grundproblem ist das kopieren ansich, da damit der Zwischenspeicher besetzt ist und bei 2 Excel-Instanzen gleichzeitig auf einem PC kann es dann passieren,
dass die einen Werte aus Excel-Instanz 1 in Excel-Instanz 2 kopiert werden, da nur EIN Zwischenspeicher benutzt wird.

Danke Dir erstmal!

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Musst du ausprobieren.
Ggf halt nicht den ganzen Block auf einmal über tragen, sondern spaltenweise.

Wenn du noch auf dem Niveau "unbearbeiteter Recordercode" programmierst, solltest du dir erstmal das hier durchlesen und dann deinen Code überarbeiten:
https://online-excel.de/excel/grusel_vba.php?f=6
Und ggf auch
https://online-excel.de/excel/grusel_vba.php?f=2 Abschnitt "Performance"

Weiterhin google mal nach "GetMoreSpeed", auch das könnte helfen, von den 10 Minuten pro Makro runter zu kommen, was dann vielleicht die sequentielle Abarbeitung möglich macht.

Und wie gesagt, beschreibe die Aufgabe, zeige deinen Code (bitte erst nachdem du die Tipps von Online-Excel umgesetzt hast), lade Breispieldateien hoch, dann können wir nochmal drüberschauen, ob man die Aufgabe nicht anders und schneller lösen kann.

Gruß Daniel

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Also das war schon einmal ein klasse Tip:

Sheets("Tabelle1").Range("C29").Value = Sheets("Tabelle2").Range("C7").Value

Damit kann ich schon mal 80% des Codes von .copy und select befreien da es nur wenige Zellen sind die so "kopiert" werden sollen.

Bei den anderen 2 große Kopiervorgängen funktioniert das leider nicht (einmal 350000 x 6 Zeilen kopieren) und einmal eine gefilterte Liste kopieren da hier die Werte nicht immer gleich viele sind (z.b. mal 100 Werte zum kopieren, dann wieder nur 90 da durch den Filter unterschiedlich viele kommen).

Die Gefilterte Liste könnte ich noch umgehen mit geschicktem Programmieren und dann evtl. mit .value arbeiten.

Wie gesagt, das Problem ist nicht die Bearbeitungszeit (das sind Formelberechnungen) sondern das unterschiedliche Dinge in der Zwischenablage liegen und Excel dadurch bei 2 Instanzen Probleme bekommen kann. Danke Erstmal!

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Die gefilterte Liste solltest du vor dem Filtern nach der Spalte mit dem Filterkriterium sortieren, so dass alle sichtbaren Zeilen möglichst einen einzigen Block ohne Unterbrechung bilden.
Das macht für Excel das kopieren einfacher und es geht schneller.
Das Kopieren der Zeilen 1+3 ohne die 2 ist für Excel wesentlich aufwendiger als das kopieren der Zeilen 1-3 (ohne Lücke)
Das Sortieren geht in Excel sehr schnell, das sollte man ausnutzen um Excel die Arbeit zu erleichtern.

Wenn die Liste so sortiert ist, dass der zu übertragende Zellblock lückenlos ist, könntest du auch wieder mit .Value = .Value über tragen, um die Zwischenablage zu vermeiden.

Wenn die Rechenzeit durch vorhandene Formeln verursacht wird und es nicht erforderlich ist, dass diese während des Makrolaufs ständig neu berechnet werden, kannst du ja die automatische Neuberechnung auch ausschalten

Gruß Daniel

Anzeige
AW: Problem Zwischenablage, 2 Excel-Makros
16.11.2022 10:09:05
Daniel
Hallo Daniel,

Es sind leider sehr viele Werte wie man sieht. Ich befürchte da kommt man mit .value nicht weit, oder?

ja, es sind immer nur Werte. Hier mal ein Beispiel:

Windows("350000Zeilen.xlsb").Activate
Sheets("Tabelle1").Select
Range("a1:f350000").Select
Selection.Copy

Windows("hiersollensierein.xlsb").Activate
Sheets("350000Zeilen").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Allein durchgängig so sparst du schon schätzungsweise ca. 9 Minuten.


Workbooks("hiersollensierein.xlsb").Activate
Workbooks("350000Zeilen.xlsb").Activate
Sheets("Tabelle1").Range("a1:f350000").Copy
Workbooks("hiersollensierein.xlsb").Sheets("350000Zeilen").Range("A1").PasteSpecial Paste:=xlPasteValues
Gruß Gerd

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Hallo Gerd, also die Zeit für die Berechnung resultiert aus den Formeln in der Datei, nicht durch den Kopiervorgang. Der Dauert nur 0.5 Sekunden.
Das Grundproblem ist das kopieren ansich, da damit der Zwischenspeicher besetzt ist und bei 2 Excel-Instanzen gleichzeitig auf einem PC kann es dann passieren,
dass die einen Werte aus Excel-Instanz 1 in Excel-Instanz 2 kopiert werden, da nur EIN Zwischenspeicher benutzt wird.

Danke Dir erstmal!

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Musst du ausprobieren.
Ggf halt nicht den ganzen Block auf einmal über tragen, sondern spaltenweise.

Wenn du noch auf dem Niveau "unbearbeiteter Recordercode" programmierst, solltest du dir erstmal das hier durchlesen und dann deinen Code überarbeiten:
https://online-excel.de/excel/grusel_vba.php?f=6
Und ggf auch
https://online-excel.de/excel/grusel_vba.php?f=2 Abschnitt "Performance"

Weiterhin google mal nach "GetMoreSpeed", auch das könnte helfen, von den 10 Minuten pro Makro runter zu kommen, was dann vielleicht die sequentielle Abarbeitung möglich macht.

Und wie gesagt, beschreibe die Aufgabe, zeige deinen Code (bitte erst nachdem du die Tipps von Online-Excel umgesetzt hast), lade Breispieldateien hoch, dann können wir nochmal drüberschauen, ob man die Aufgabe nicht anders und schneller lösen kann.

Gruß Daniel

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Also das war schon einmal ein klasse Tip:

Sheets("Tabelle1").Range("C29").Value = Sheets("Tabelle2").Range("C7").Value

Damit kann ich schon mal 80% des Codes von .copy und select befreien da es nur wenige Zellen sind die so "kopiert" werden sollen.

Bei den anderen 2 große Kopiervorgängen funktioniert das leider nicht (einmal 350000 x 6 Zeilen kopieren) und einmal eine gefilterte Liste kopieren da hier die Werte nicht immer gleich viele sind (z.b. mal 100 Werte zum kopieren, dann wieder nur 90 da durch den Filter unterschiedlich viele kommen).

Die Gefilterte Liste könnte ich noch umgehen mit geschicktem Programmieren und dann evtl. mit .value arbeiten.

Wie gesagt, das Problem ist nicht die Bearbeitungszeit (das sind Formelberechnungen) sondern das unterschiedliche Dinge in der Zwischenablage liegen und Excel dadurch bei 2 Instanzen Probleme bekommen kann. Danke Erstmal!

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Die gefilterte Liste solltest du vor dem Filtern nach der Spalte mit dem Filterkriterium sortieren, so dass alle sichtbaren Zeilen möglichst einen einzigen Block ohne Unterbrechung bilden.
Das macht für Excel das kopieren einfacher und es geht schneller.
Das Kopieren der Zeilen 1+3 ohne die 2 ist für Excel wesentlich aufwendiger als das kopieren der Zeilen 1-3 (ohne Lücke)
Das Sortieren geht in Excel sehr schnell, das sollte man ausnutzen um Excel die Arbeit zu erleichtern.

Wenn die Liste so sortiert ist, dass der zu übertragende Zellblock lückenlos ist, könntest du auch wieder mit .Value = .Value über tragen, um die Zwischenablage zu vermeiden.

Wenn die Rechenzeit durch vorhandene Formeln verursacht wird und es nicht erforderlich ist, dass diese während des Makrolaufs ständig neu berechnet werden, kannst du ja die automatische Neuberechnung auch ausschalten

Gruß Daniel

Anzeige
AW: Problem Zwischenablage, 2 Excel-Makros
16.11.2022 10:09:05
Daniel
Allein durchgängig so sparst du schon schätzungsweise ca. 9 Minuten.


Workbooks("hiersollensierein.xlsb").Activate
Workbooks("350000Zeilen.xlsb").Activate
Sheets("Tabelle1").Range("a1:f350000").Copy
Workbooks("hiersollensierein.xlsb").Sheets("350000Zeilen").Range("A1").PasteSpecial Paste:=xlPasteValues
Gruß Gerd

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Hallo Gerd, also die Zeit für die Berechnung resultiert aus den Formeln in der Datei, nicht durch den Kopiervorgang. Der Dauert nur 0.5 Sekunden.
Das Grundproblem ist das kopieren ansich, da damit der Zwischenspeicher besetzt ist und bei 2 Excel-Instanzen gleichzeitig auf einem PC kann es dann passieren,
dass die einen Werte aus Excel-Instanz 1 in Excel-Instanz 2 kopiert werden, da nur EIN Zwischenspeicher benutzt wird.

Danke Dir erstmal!

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Musst du ausprobieren.
Ggf halt nicht den ganzen Block auf einmal über tragen, sondern spaltenweise.

Wenn du noch auf dem Niveau "unbearbeiteter Recordercode" programmierst, solltest du dir erstmal das hier durchlesen und dann deinen Code überarbeiten:
https://online-excel.de/excel/grusel_vba.php?f=6
Und ggf auch
https://online-excel.de/excel/grusel_vba.php?f=2 Abschnitt "Performance"

Weiterhin google mal nach "GetMoreSpeed", auch das könnte helfen, von den 10 Minuten pro Makro runter zu kommen, was dann vielleicht die sequentielle Abarbeitung möglich macht.

Und wie gesagt, beschreibe die Aufgabe, zeige deinen Code (bitte erst nachdem du die Tipps von Online-Excel umgesetzt hast), lade Breispieldateien hoch, dann können wir nochmal drüberschauen, ob man die Aufgabe nicht anders und schneller lösen kann.

Gruß Daniel

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Also das war schon einmal ein klasse Tip:

Sheets("Tabelle1").Range("C29").Value = Sheets("Tabelle2").Range("C7").Value

Damit kann ich schon mal 80% des Codes von .copy und select befreien da es nur wenige Zellen sind die so "kopiert" werden sollen.

Bei den anderen 2 große Kopiervorgängen funktioniert das leider nicht (einmal 350000 x 6 Zeilen kopieren) und einmal eine gefilterte Liste kopieren da hier die Werte nicht immer gleich viele sind (z.b. mal 100 Werte zum kopieren, dann wieder nur 90 da durch den Filter unterschiedlich viele kommen).

Die Gefilterte Liste könnte ich noch umgehen mit geschicktem Programmieren und dann evtl. mit .value arbeiten.

Wie gesagt, das Problem ist nicht die Bearbeitungszeit (das sind Formelberechnungen) sondern das unterschiedliche Dinge in der Zwischenablage liegen und Excel dadurch bei 2 Instanzen Probleme bekommen kann. Danke Erstmal!

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Die gefilterte Liste solltest du vor dem Filtern nach der Spalte mit dem Filterkriterium sortieren, so dass alle sichtbaren Zeilen möglichst einen einzigen Block ohne Unterbrechung bilden.
Das macht für Excel das kopieren einfacher und es geht schneller.
Das Kopieren der Zeilen 1+3 ohne die 2 ist für Excel wesentlich aufwendiger als das kopieren der Zeilen 1-3 (ohne Lücke)
Das Sortieren geht in Excel sehr schnell, das sollte man ausnutzen um Excel die Arbeit zu erleichtern.

Wenn die Liste so sortiert ist, dass der zu übertragende Zellblock lückenlos ist, könntest du auch wieder mit .Value = .Value über tragen, um die Zwischenablage zu vermeiden.

Wenn die Rechenzeit durch vorhandene Formeln verursacht wird und es nicht erforderlich ist, dass diese während des Makrolaufs ständig neu berechnet werden, kannst du ja die automatische Neuberechnung auch ausschalten

Gruß Daniel

Anzeige
AW: Problem Zwischenablage, 2 Excel-Makros
16.11.2022 10:09:05
Daniel
Hallo Gerd, also die Zeit für die Berechnung resultiert aus den Formeln in der Datei, nicht durch den Kopiervorgang. Der Dauert nur 0.5 Sekunden.
Das Grundproblem ist das kopieren ansich, da damit der Zwischenspeicher besetzt ist und bei 2 Excel-Instanzen gleichzeitig auf einem PC kann es dann passieren,
dass die einen Werte aus Excel-Instanz 1 in Excel-Instanz 2 kopiert werden, da nur EIN Zwischenspeicher benutzt wird.

Danke Dir erstmal!

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Musst du ausprobieren.
Ggf halt nicht den ganzen Block auf einmal über tragen, sondern spaltenweise.

Wenn du noch auf dem Niveau "unbearbeiteter Recordercode" programmierst, solltest du dir erstmal das hier durchlesen und dann deinen Code überarbeiten:
https://online-excel.de/excel/grusel_vba.php?f=6
Und ggf auch
https://online-excel.de/excel/grusel_vba.php?f=2 Abschnitt "Performance"

Weiterhin google mal nach "GetMoreSpeed", auch das könnte helfen, von den 10 Minuten pro Makro runter zu kommen, was dann vielleicht die sequentielle Abarbeitung möglich macht.

Und wie gesagt, beschreibe die Aufgabe, zeige deinen Code (bitte erst nachdem du die Tipps von Online-Excel umgesetzt hast), lade Breispieldateien hoch, dann können wir nochmal drüberschauen, ob man die Aufgabe nicht anders und schneller lösen kann.

Gruß Daniel

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Also das war schon einmal ein klasse Tip:

Sheets("Tabelle1").Range("C29").Value = Sheets("Tabelle2").Range("C7").Value

Damit kann ich schon mal 80% des Codes von .copy und select befreien da es nur wenige Zellen sind die so "kopiert" werden sollen.

Bei den anderen 2 große Kopiervorgängen funktioniert das leider nicht (einmal 350000 x 6 Zeilen kopieren) und einmal eine gefilterte Liste kopieren da hier die Werte nicht immer gleich viele sind (z.b. mal 100 Werte zum kopieren, dann wieder nur 90 da durch den Filter unterschiedlich viele kommen).

Die Gefilterte Liste könnte ich noch umgehen mit geschicktem Programmieren und dann evtl. mit .value arbeiten.

Wie gesagt, das Problem ist nicht die Bearbeitungszeit (das sind Formelberechnungen) sondern das unterschiedliche Dinge in der Zwischenablage liegen und Excel dadurch bei 2 Instanzen Probleme bekommen kann. Danke Erstmal!

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Die gefilterte Liste solltest du vor dem Filtern nach der Spalte mit dem Filterkriterium sortieren, so dass alle sichtbaren Zeilen möglichst einen einzigen Block ohne Unterbrechung bilden.
Das macht für Excel das kopieren einfacher und es geht schneller.
Das Kopieren der Zeilen 1+3 ohne die 2 ist für Excel wesentlich aufwendiger als das kopieren der Zeilen 1-3 (ohne Lücke)
Das Sortieren geht in Excel sehr schnell, das sollte man ausnutzen um Excel die Arbeit zu erleichtern.

Wenn die Liste so sortiert ist, dass der zu übertragende Zellblock lückenlos ist, könntest du auch wieder mit .Value = .Value über tragen, um die Zwischenablage zu vermeiden.

Wenn die Rechenzeit durch vorhandene Formeln verursacht wird und es nicht erforderlich ist, dass diese während des Makrolaufs ständig neu berechnet werden, kannst du ja die automatische Neuberechnung auch ausschalten

Gruß Daniel

Anzeige
AW: Problem Zwischenablage, 2 Excel-Makros
16.11.2022 10:09:05
Daniel
Musst du ausprobieren.
Ggf halt nicht den ganzen Block auf einmal über tragen, sondern spaltenweise.

Wenn du noch auf dem Niveau "unbearbeiteter Recordercode" programmierst, solltest du dir erstmal das hier durchlesen und dann deinen Code überarbeiten:
https://online-excel.de/excel/grusel_vba.php?f=6
Und ggf auch
https://online-excel.de/excel/grusel_vba.php?f=2 Abschnitt "Performance"

Weiterhin google mal nach "GetMoreSpeed", auch das könnte helfen, von den 10 Minuten pro Makro runter zu kommen, was dann vielleicht die sequentielle Abarbeitung möglich macht.

Und wie gesagt, beschreibe die Aufgabe, zeige deinen Code (bitte erst nachdem du die Tipps von Online-Excel umgesetzt hast), lade Breispieldateien hoch, dann können wir nochmal drüberschauen, ob man die Aufgabe nicht anders und schneller lösen kann.

Gruß Daniel

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Also das war schon einmal ein klasse Tip:

Sheets("Tabelle1").Range("C29").Value = Sheets("Tabelle2").Range("C7").Value

Damit kann ich schon mal 80% des Codes von .copy und select befreien da es nur wenige Zellen sind die so "kopiert" werden sollen.

Bei den anderen 2 große Kopiervorgängen funktioniert das leider nicht (einmal 350000 x 6 Zeilen kopieren) und einmal eine gefilterte Liste kopieren da hier die Werte nicht immer gleich viele sind (z.b. mal 100 Werte zum kopieren, dann wieder nur 90 da durch den Filter unterschiedlich viele kommen).

Die Gefilterte Liste könnte ich noch umgehen mit geschicktem Programmieren und dann evtl. mit .value arbeiten.

Wie gesagt, das Problem ist nicht die Bearbeitungszeit (das sind Formelberechnungen) sondern das unterschiedliche Dinge in der Zwischenablage liegen und Excel dadurch bei 2 Instanzen Probleme bekommen kann. Danke Erstmal!

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Die gefilterte Liste solltest du vor dem Filtern nach der Spalte mit dem Filterkriterium sortieren, so dass alle sichtbaren Zeilen möglichst einen einzigen Block ohne Unterbrechung bilden.
Das macht für Excel das kopieren einfacher und es geht schneller.
Das Kopieren der Zeilen 1+3 ohne die 2 ist für Excel wesentlich aufwendiger als das kopieren der Zeilen 1-3 (ohne Lücke)
Das Sortieren geht in Excel sehr schnell, das sollte man ausnutzen um Excel die Arbeit zu erleichtern.

Wenn die Liste so sortiert ist, dass der zu übertragende Zellblock lückenlos ist, könntest du auch wieder mit .Value = .Value über tragen, um die Zwischenablage zu vermeiden.

Wenn die Rechenzeit durch vorhandene Formeln verursacht wird und es nicht erforderlich ist, dass diese während des Makrolaufs ständig neu berechnet werden, kannst du ja die automatische Neuberechnung auch ausschalten

Gruß Daniel

Anzeige
AW: Problem Zwischenablage, 2 Excel-Makros
16.11.2022 10:09:05
Daniel
Also das war schon einmal ein klasse Tip:

Sheets("Tabelle1").Range("C29").Value = Sheets("Tabelle2").Range("C7").Value

Damit kann ich schon mal 80% des Codes von .copy und select befreien da es nur wenige Zellen sind die so "kopiert" werden sollen.

Bei den anderen 2 große Kopiervorgängen funktioniert das leider nicht (einmal 350000 x 6 Zeilen kopieren) und einmal eine gefilterte Liste kopieren da hier die Werte nicht immer gleich viele sind (z.b. mal 100 Werte zum kopieren, dann wieder nur 90 da durch den Filter unterschiedlich viele kommen).

Die Gefilterte Liste könnte ich noch umgehen mit geschicktem Programmieren und dann evtl. mit .value arbeiten.

Wie gesagt, das Problem ist nicht die Bearbeitungszeit (das sind Formelberechnungen) sondern das unterschiedliche Dinge in der Zwischenablage liegen und Excel dadurch bei 2 Instanzen Probleme bekommen kann. Danke Erstmal!

nach oben  nach unten

Betrifft: AW: Problem Zwischenablage, 2 Excel-Makros
Die gefilterte Liste solltest du vor dem Filtern nach der Spalte mit dem Filterkriterium sortieren, so dass alle sichtbaren Zeilen möglichst einen einzigen Block ohne Unterbrechung bilden.
Das macht für Excel das kopieren einfacher und es geht schneller.
Das Kopieren der Zeilen 1+3 ohne die 2 ist für Excel wesentlich aufwendiger als das kopieren der Zeilen 1-3 (ohne Lücke)
Das Sortieren geht in Excel sehr schnell, das sollte man ausnutzen um Excel die Arbeit zu erleichtern.

Wenn die Liste so sortiert ist, dass der zu übertragende Zellblock lückenlos ist, könntest du auch wieder mit .Value = .Value über tragen, um die Zwischenablage zu vermeiden.

Wenn die Rechenzeit durch vorhandene Formeln verursacht wird und es nicht erforderlich ist, dass diese während des Makrolaufs ständig neu berechnet werden, kannst du ja die automatische Neuberechnung auch ausschalten

Gruß Daniel

Anzeige
AW: Problem Zwischenablage, 2 Excel-Makros
16.11.2022 10:09:05
Daniel
Die gefilterte Liste solltest du vor dem Filtern nach der Spalte mit dem Filterkriterium sortieren, so dass alle sichtbaren Zeilen möglichst einen einzigen Block ohne Unterbrechung bilden.
Das macht für Excel das kopieren einfacher und es geht schneller.
Das Kopieren der Zeilen 1+3 ohne die 2 ist für Excel wesentlich aufwendiger als das kopieren der Zeilen 1-3 (ohne Lücke)
Das Sortieren geht in Excel sehr schnell, das sollte man ausnutzen um Excel die Arbeit zu erleichtern.

Wenn die Liste so sortiert ist, dass der zu übertragende Zellblock lückenlos ist, könntest du auch wieder mit .Value = .Value über tragen, um die Zwischenablage zu vermeiden.

Wenn die Rechenzeit durch vorhandene Formeln verursacht wird und es nicht erforderlich ist, dass diese während des Makrolaufs ständig neu berechnet werden, kannst du ja die automatische Neuberechnung auch ausschalten

Gruß Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige