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

vergleichen/copy/paste = Überlauf

Forumthread: vergleichen/copy/paste = Überlauf

vergleichen/copy/paste = Überlauf
20.03.2022 12:18:31
Fred
Hallo Excel Experten,
vor Wochen habe ich hier aus einem Beitrag ein Makro übernommen. Nun möchte ich das auf meine Gegebenheiten ändern,- was auch klappt,- wenn der Datenbestand nicht "zuviele Zeilen" beträgt.

Sub rgebnisse_eintragen()
Dim lngZeile As Long
Dim lngSpalteMax As Long
Dim lngZeileMax As Long
Dim lngSpalte As Long
Dim lngZeileMax2 As Long
Dim VarDat As Variant
Dim i As Integer
Dim sQuellSpalte As String
Dim sZielSpalte As String
Dim lngQuellZeile As Long
Dim lngQuellSpalte As Long
Dim lngZielZeile As Long
Dim lngZielSpalte As Long
Application.ScreenUpdating = False
LZ_UnikateClear2 = ThisWorkbook.Sheets("Tagesliste").Cells(Rows.Count, 1).End(xlUp).Row
Sheets("Tagesliste").Range("Y8:Z" & LZ_UnikateClear2).ClearContents
With Sheets("Unikate")
'Ermittel die letzte beschriebene Zeile in Spalte A "unikate" und speichere den Wert in Variable lngZeileMax
lngZeileMax = .Range("A" & .Rows.Count).End(xlUp).Row
'Ermittel die Anzahl der beschriebenen Spalten in "unikate" und speichere den Wert in Variable lngSpalteMax
lngSpalteMax = .UsedRange.SpecialCells(xlCellTypeLastCell).Column  ' minus 1 weil letzte Spalte eine Hilfsspalte ist
'Ermittel die letzte beschriebene Zelle in Spalte A "Tagesliste" und speichere den Wert in Variable lngZeileMax2
lngZeileMax2 = Sheets("Tagesliste").Range("A" & .Rows.Count).End(xlUp).Row
'Schleife zum durchsuchen der Zeilen von Zeile 5 beginnend bis zur letzten beschriebenen Zeile in Spalte A
For lngZeile = 5 To lngZeileMax
'Definiere Suchbereich der Schleife
VarDat = Sheets("Tagesliste").Range("A2:A" & lngZeileMax2)
'Pruefe nun Zeile fuer Zeile im definierten Suchbereich VarDat
For i = 1 To UBound(VarDat)
'Wenn der Wert in der Zeile "Live" = Wert in der Zeile "import"
If .Range("A" & lngZeile).Value = VarDat(i, 1) Then
'dann starte neue Schleife und beginne mit Uebertrag der Daten in die Zielzeile und Zielspalte
For lngSpalte = 21 To (lngSpalteMax + 0) ' kopiert ab Spalte
lngQuellZeile = lngZeile
lngQuellSpalte = lngSpalte
lngZielZeile = i + 1
lngZielSpalte = lngQuellSpalte + 4 ' fügt ein ab Spalte
'Übertrage Daten in die Spalten
Sheets("Tagesliste").Cells(lngZielZeile, lngZielSpalte).Value = .Cells(lngQuellZeile, lngQuellSpalte).Value
Next lngSpalte
End If
Next i
Next lngZeile
End With
Application.CutCopyMode = False
End Sub
Ich habe regelmäßig über 40.000 Zeilen auf diese Art zu bearbeiten und bekomme bei dieser Menge die Fehlermeldung "Überlauf".
Wie ändere ich entsprechend das Makro?
Gruss
Fred
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: vergleichen/copy/paste = Überlauf
20.03.2022 12:38:44
Oberschlumpf
Hi Fred,
Integer haben einen MAX-Bereich bis etwas mehr als 32000 Einträge.
Mach mal aus...

Dim i As Integer
...das hier...

Dim i As Long
...hilfts?
Wenn nein, zeig eine Bsp-Datei per Upload, in der dein Problem nachvollziehbar ist.
Ciao
Thorsten
Anzeige
AW: vergleichen/copy/paste = Überlauf
20.03.2022 13:18:58
Fred
Hallo Thorsten,
ich glaube, das Makro kam damals von dir,- für einen anderen User,- hab es ebenfalls übernommen.
Jo! Diese kleine Korrektur aus

Dim i As Integer
mach einen anderen Datentyp

Dim i As Long
ist ein Volltreffer. Habe es bei 35.000 Zeilen getestet und es funzt.
Vielen vielen Dank Thorsten,- für deine Aufmerksamkeit und Kompetenz!
Gruss
Fred
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige