Array wird nicht komplett zurückgegeben
31.01.2023 19:31:45
Hebi
ich habe folgendes Problem. Ich habe ein Sheet mit ~14.000 Zeilen und 15 Spalten. Ich lasse die Daten zeilenweise in ein Array einlesen und möchte Sie anschließend transponiert zurückgeben. Das funktioniert auch prima und das Array ist mit 188.511 Elementen gefüllt.
Jedoch bekomme ich bei der Ausgabe immer nur 57.439 Zeilen ausgegeben, danach kommen nur noch #NV Werte.
Mein Makro sieht folgendermaßen aus:
Sub ReadDataToArray()
Dim wsSource As Worksheet
Dim wsTarget As Worksheet
Dim dataArray() As Variant
Dim lastRow As Long
Dim i As Long
ThisWorkbook.Sheets("Array").Delete
Set wsSource = ThisWorkbook.Sheets("Step_13")
Set wsTarget = ThisWorkbook.Sheets.Add
wsTarget.Name = "Array"
lastRow = wsSource.Cells(wsSource.Rows.Count, "B").End(xlUp).Row
ReDim dataArray(1 To lastRow * 14 - 13)
i = 1
For Row = 2 To lastRow
For col = 2 To 15
dataArray(i) = wsSource.Cells(Row, col).Value
i = i + 1
Next col
Next Row
wsTarget.Range("A1").Resize(UBound(dataArray), 1).Value = Application.WorksheetFunction.Transpose(dataArray)
End Sub
Wenn ich statt der letzten Zeile folgenden Code verwende funktioniert es, jedoch ist das Makro dann sehr viel langsamer:
For i = 1 To UBound(dataArray, 1)
wsTarget.Cells(i, 1).Value = dataArray(i)
Next i
Gerne möchte ich verstehen, warum mein ursprünglicher Code nicht korrekt funktioniert. Ich würde mich freuen, wenn jemand helfen kann.