Hi,
ein Array kann durch aus mehr als 256 Zeichen fassen. Im Prinzip sogar bis zu 2 Milliarden, da würdest du aber schnell an die Kapazitätsgrenze des zur Verfügung stehenden Speichers kommen und eine "Out of memory" Meldung erhalten (falls Excel das überhaupt mitmachen würde).
Bei deinen Codeauszug sind ein paar kritische Fehler enthalten:
Warum benutzt du die Transpose Funktion? Die vertausch lediglich die Dimensionen eines Arrays (Zeilen > Spalten). Dein Array hat zwei Dimensionen (nicht eine), also arrSource(lastRow,1), durch die Umwandlung mit Transpose wird daraus arrSource(1,lastRow). Wenn du eine 2 eingibst erscheint also die Meldung "Index außerhalb des gültigen Bereiches", welche bei dir allerdings schon erscheint, weil du ein zweidimensionales Array mit der Angabe von nur einer Dimension versuchst aufzurufen.
Versuch stattdessen mal Folgendes:
Dim arrSource As Variant
Dim arrTarget As Variant
Dim ioLastRow As Long
Dim iCnt1 As Integer, iCnt2 As Integer
arrSource = Range(Cells(1, 13), Cells(Rows.Count, 13).End(xlUp)).Value
loLastRow = UBound(arrSource)
ReDim arrTarget(1 To loLastRow, 1)
For iCnt1 = 1 To loLastRow
If Len(arrSource(iCnt1, 1)) > 0 Then
iCnt2 = iCnt2 + 1
arrTarget(iCnt2, 1) = arrSource(iCnt1, 1)
End If
Next
Workbooks.Add
Range(Cells(1, 1), Cells(ioLastRow, 1)).Resize(iCnt2, 1) = arrTarget
Gruß
Till
|