Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Datensatz kopieren+einfügen - Code verinfachen

Datensatz kopieren+einfügen - Code verinfachen
23.09.2019 12:23:57
Christian
Grüßt euch,
Für ein Projekt habe ich den unten stehenden Code geschrieben. Mit diesem sollen Daten(Aktienkursdaten) von Tabellenblatt "Eingabe" in Tabellenblatt "Daten" verschoben werden und anschließend die Spalte A5 und B5 bis Ende geleert werden. Des Weiteren sollen ein paar Spezifische Kenndaten, wie Name ISIN und Variablentyp in das Tabellenblatt "Daten" kopiert werden.
Die Daten aus Tabellenblatt "Eingabe" sollen die bereits verschobenen Daten im Tabellenblatt "Daten" nicht überschreiben, sondern in einer Spalte direkt daneben eingefügt werden.
Bisher sind es meistens ca. 250 Kursdaten sowie Datumsangaben welche kopiert werden sollen. Jedoch kann die Anzahl auch auf mehere tausend ansteigen.
Da mein bisheriger Code sehr langsam ist, würde ich gern einen Vorschlag für eine schnellere Variante bekommen.
(der letzte Wert des Datensatz soll nicht mitkopiert werden, da dieser meist fehlerbehaftet ist.)
Vielen Dank
Christian

Sub DatenkopierenEinfügen()
'Variablen definieren
Dim i As Long
Dim n As Long
Dim letzteZeile As Integer
Dim letzteSpalte As Integer
Dim Eingabe As Worksheet
Dim Daten As Worksheet
Set Eingabe = ThisWorkbook.Worksheets("Eingabe")
Set Daten = ThisWorkbook.Worksheets("Daten")
'ermittelt die letzte Zeile. Zählt von der letzten Reihe rückwärts bis zur ersten beschriebenen  _
Zeile.
letzteZeile = Eingabe.Cells(Rows.Count, 2).End(xlUp).Row
'ermitteln welches die erste leere Spalte ist.
letzteSpalte = Daten.Cells(2, Columns.Count).End(xlToLeft).Column
n = letzteSpalte + 1
'Zeilen und Spalten in Tabellenblatt Daten fixieren.
Daten.Activate
Range("B5").Activate
ActiveWindow.FreezePanes = True
Eingabe.Activate
'Kopiert die Überschriften und Indexspezifischen Daten
Eingabe.Cells(1, 2).Cut Destination:=Daten.Cells(1, n)
Eingabe.Cells(2, 2).Cut Destination:=Daten.Cells(2, n)
Eingabe.Cells(3, 2).Cut Destination:=Daten.Cells(3, n)
'Kopiert Daten aus Spalte A und B in neues Tabellenblatt
For i = 5 To letzteZeile - 1
Eingabe.Cells(i, 1).Copy Destination:=Daten.Cells(i, 1)
Eingabe.Cells(i, 2).Cut Destination:=Daten.Cells(i, n)
Daten.Cells(4, 2).Copy Destination:=Daten.Cells(4, n)
Next i
Eingabe.Range("B1").SpecialCells(xlCellTypeLastCell).Clear
End Sub

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datensatz kopieren+einfügen - Code verinfachen
23.09.2019 13:10:28
ChrisL
Hi Christian
Die üblichen Tipps ScreenUpdating Calculation etc. findest du in der Recherche.
Hauptsächlich kannst du den Prozess aber beschleunigen, wenn du die Zellen nicht einzeln (in der Schleife), sondern am Stück kopierst.
Eingabe.Range(Eingabe.Cells(5, 1), Eingabe.Cells(letzteZeile - 1, 1)).Copy Destination:=Daten.Cells(5, 1)
Eingabe.Range(Eingabe.Cells(5, 2), Eingabe.Cells(letzteZeile - 1, 2)).Cut Destination:=Daten.Cells(5, n)
cu
Chris
AW: Datensatz kopieren+einfügen - Code verinfachen
23.09.2019 13:24:14
Christian
Hallo Christian,
danke dir für die Antwort.
Mit Range hatte ich es anfangs versucht, bin jedoch immer gescheitert bei der
Formulierung des Codes im RangeBereich.
Dank deiner Hilfe bin ich nun wieder schlauer ;-):
Den Rest werde ich mir noch zusammensuchen.
Danke
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige