Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1876to1880
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

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

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
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

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige