Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Code vereinfachen, beschleunigen

Forumthread: Code vereinfachen, beschleunigen

Code vereinfachen, beschleunigen
17.11.2022 23:13:54
Alex
Hallo zusammen,
ich habe mit einem Makro ein kleines Problem. Und zwar, habe ich ein Makro erstellt, welches mir bei jedem Öffnen der Excel Datei automatisch die Rahmenlinien in den Ursprung zurücksetzt, da dort Personen drinnen herumwerkeln, welche immer mal wieder die Rahmenlinien beim Verschieben/Kopieren durcheinanderbringen.
Dafür habe ich im Bereich D100:ABS131 die Rahmenlinien ohne Befüllung im Original hinterlegt. Im Bereich D150:ABS181 wird der Zellinhalt aus meinen genutzten Zellen (D6:ABS37) kopiert. Danach werden die Rahmenlinien wieder zurück kopiert aus D100:ABS131 auf D6:ABS37. Vom Bereich D150:ABS181 wird dann der Zellinhalt ohne Rahmenlinien nach D6:ABS37 kopiert. Das ganze funktioniert. Allerdings dauert es beim Öffnen der Excel Datei es ca. 3 Sekunden, bis er dieses Makro durchgeführt hat.
Das Makro lässt sich doch sicherlich hier und da optimieren, sodass das alles evtl. schneller läuft?
Danke schon mal.

Sub Fzg_Rahmen_Reset() ' Fahrzeuge Rahmen Reset
Range("D6:ABS37").Select 'Ursprung mit Inhalt kopieren
Selection.Copy
Range("D150:ABS181").Select 'Ursprung in Zwischenablage einfügen
ActiveSheet.Paste
Application.CutCopyMode = False 'unberührten Orginalrahmen kopieren
Range("D100:ABS131").Select
Selection.Copy
Range("D6:ABS37").Select 'unberührten Originalrahmen in Ursprung kopieren
ActiveSheet.Paste
Application.CutCopyMode = False 'Zwischenablage kopieren
Range("D150:ABS181").Select
Selection.Copy
Range("D6:ABS37").Select 'Zwischenablage ohne Rahmenlinien in Ursprung kopieren
Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
End Sub
Anzeige

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code vereinfachen, beschleunigen
18.11.2022 00:07:05
onur

    Range("D6:ABS37").Copy
Range("D100:ABS131").PasteSpecial Paste:=xlValues
Range("D100:ABS131").Copy Range("D6:ABS37")
Range("D100:ABS131").ClearContent
Application.CutCopyMode = False '

AW: Code vereinfachen, beschleunigen
18.11.2022 00:09:22
onur
Und ggf am Anfang und am Ende

Application.ScreenUpdating = False bzw True.

Anzeige
AW: Code vereinfachen, beschleunigen
18.11.2022 08:52:58
Alex
Hallo und danke schon mal für die Anpassungen. Leider macht das den Code nicht merklich schneller.
Ich habe was von Arrays anstantt Range gelesen. Würde es damit gehen, bzw. sind dafür die Arrays überhaupt da?
Kenne mich da mal überhaupt nicht aus.
Grüße
AW: Code vereinfachen, beschleunigen
18.11.2022 09:22:38
onur

    Range("D100:ABS131").Copy
Range("D6:ABS37").PasteSpecial Paste:=xlPasteFormats

Anzeige
AW: Code vereinfachen, beschleunigen
18.11.2022 10:04:51
Alex
Hallo Onur, sorry, dass ich nicht auf deine Nachricht geantwortet habe, ist leider untergegangen. Danke dir.
Und sorry nochmal.
AW: Code vereinfachen, beschleunigen
18.11.2022 09:29:57
hary
Moin
Reicht es nicht nur die Rahmen kopieren?

Range("D150:ABS181").Copy
Range("D6:ABS37").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Statt Value zu kopieren geht auch:

Range("D150:ABS181").Value = Range("D6:ABS37").Value
gruss hary
Anzeige
AW: Code vereinfachen, beschleunigen
18.11.2022 09:36:56
Alex
Hallo und Danke für die Antwort
mit dem Code

Range("D150:ABS181").Copy
Range("D6:ABS37").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
werden leider auch die farbig markierten Zellen resettet.
AW: Code vereinfachen, beschleunigen
18.11.2022 09:39:11
onur
Und wieso antwortest du MIR nicht?
Anzeige
AW: Code vereinfachen, beschleunigen
18.11.2022 10:11:37
Alex
Der Vollständigkeitshalber poste ich noch den Code, wie ich ihn jetzt aktuell habe und er dadurch tatsächlich etwas schneller geworden ist. So ist es für mich akzeptabel und in Ordnung. Vielen Dank euch Beiden!
Durch die Kombination von Onurs und harys Codes kam nun folgendes raus:

Sub Fzg_Rahmen_Reset() ' Fahrzeuge Rahmen Reset
Application.ScreenUpdating = False
'Ursprung kopieren
Range("D6:ABS37").Copy
'Ursprung in Zwischenablage ohne Rahmenlinien einfügen
Range("D100:ABS1371").PasteSpecial Paste:=xlPasteAllExceptBorders, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'Zwischenablage kopieren
Range("D100:ABS1371").Copy
'Zwischenablage in den Ursprung einfügen
Range("D6:ABS37").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'Spaltenbreite zurücksetzen
Columns("D:ABS").ColumnWidth = 4 'Spaltenbreite zurücksetzen
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Code vereinfachen, beschleunigen
18.11.2022 10:15:56
onur
Wieso Kombination? Meine ZWEI Zeilen reichen doch statt deinen 8-10.
AW: Code vereinfachen, beschleunigen
18.11.2022 10:34:24
Alex
Mit den zwei Zeilen werden allerdings nicht die farbigen Füllungen der Zellen übernommen, sondern sie sind dann weiß.
AW: Code vereinfachen, beschleunigen
18.11.2022 10:41:59
onur
"die farbigen Füllungen" ? Davon war aber in all deinen Beschreibungen nie die Rede. Es heisst immer nur "wird der Zellinhalt aus meinen genutzten Zellen (D6:ABS37) kopiert"
Am Einfachsten: Den Bereich D6:ABS37 wählen, Makrorecorder einschalten - Rahmen wie gewünscht setzen und Makrorecorder wieder stoppen - dieses Makro benutzen.
Anzeige
AW: Code vereinfachen, beschleunigen
18.11.2022 10:48:46
Alex
Hallo, mit Zellinhalt und Füllungen habe ich mich wohl falsch ausgdrückt. Sorry.
Das mit dem Makroaufzeichnen und die Rahmen ziehen wäre eine Idee gewesen, aber ich habe mehrere Dateien wo dieses Makro läuft und die Tabellen sind unterschiedlich lang. So muss ich nicht für jede Datei ein eigenes Makro aufzeichnen.
Anzeige
AW: Code vereinfachen, beschleunigen
18.11.2022 10:59:04
onur
Das musst(est) du ja auch für das jetzige Makro.
Du musst nicht jedesmal neu aufzeichnen, nur den Bereich (VD6:ABS37) anpassen.
AW: Code vereinfachen, beschleunigen
18.11.2022 10:19:33
Daniel
Hi
Passen deine Zellbereiche?
Müsste es hier nicht ABS131 statt ABS1371 sein?
Wenn du Formeln in der Tabelle hast, könntest du eventuell noch die Automatische Neuberechnung ausschalten um den Vorgang zu beschleunigen.
Application.Calculation =xlcalculationmanual
Und am Ende dann wieder ein mit
Application.Calculation =xlcalculationautomatic
Gruß Daniel
Anzeige
AW: Code vereinfachen, beschleunigen
18.11.2022 10:39:52
Alex
Danke Daniel, habs mal mit eingebaut.
Zum Range, ja das ist mir dann auch aufgefallen, dass sich da noch eine 1 mit eingeschlichen hat. Danke für den Hinweis. Hätte aber keine Auswirkungen gehabt, außer, dass ein größerer Bereich kopiert wird und es dadurch weider länger dauert.
AW: Code vereinfachen, beschleunigen
18.11.2022 11:15:43
Daniel
naja, die sache beschleunigen war doch dein Ziel, oder?
Anzeige
AW: Code vereinfachen, beschleunigen
18.11.2022 11:25:32
Alex
natürlich, aber der deutlich größere Bereich, wurde direkt nach dem Posten hier geändert. Das Ursprüngliche Geschwindigkeitsproblem hatte nichts damit zu tun, da dieser Code da noch gar nicht verwendet wurde.
Wie gesagt, alles ist bestens nun und ich bedanke mich.
hier wird...
18.11.2022 10:39:09
Oberschlumpf
...mal wieder viel geraten und gerätselt...
Hi Alex,
wie lange wirds wohl noch dauern, bis du bitte per Upload eine Bsp-Datei mit allen erforderlichen Inhalten an den richtigen Stellen zeigst?
Denn, wie du ja merkst, findest du - mit - Datei noch keine Lösung....und wir, bzw die Helfer haben - ohne - Datei ja auch noch nicht helfen können.
Ciao
Thorsten
Anzeige
AW: hier wird...
18.11.2022 10:43:04
Alex
Hallo Thorsten,
danke für deine Nachricht. Den Code, welchen ich nun verwende, funktioniert nun für mich.
Mir wurde in den einzelnen Schritten konstruktiv geholfen.
Daher ist diese Frage durch mich auch nicht mehr als "offen" deklariert.
Grüße
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige