Das folgende Skript funktioniert bei kleineren Datensätzen (weniger als 30k Zeilen oder so), führt jedoch zu "#VALUE" -Fehlern für jede Zelle im ausgewählten Bereich, wenn der Bereich größer ist.VBA und Excel: Warum führt mein TRIM-Skript bei großen Datensätzen zu #VALUE?
Dim FirstCell As Range, LastCell As Range, MyRange As Range
Set LastCell = Cells(Cells.Find(What:="*", SearchOrder:=xlRows, _
SearchDirection:=xlPrevious, LookIn:=xlValues).Row, _
Cells.Find(What:="*", SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, LookIn:=xlValues).Column)
Set FirstCell = Cells(Cells.Find(What:="*", After:=LastCell, SearchOrder:=xlRows, _
SearchDirection:=xlNext, LookIn:=xlValues).Row, _
Cells.Find(What:="*", After:=LastCell, SearchOrder:=xlByColumns, _
SearchDirection:=xlNext, LookIn:=xlValues).Column)
Set MyRange = Range(FirstCell, LastCell)
MyRange.Select
If MyRange Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
With Selection
.Value = Evaluate("if(row(" & .Address & "),clean(trim(" & .Address & ")))")
End With
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
MsgBox "Finished trimming " & vbCrLf & "excess spaces", 64
Über wie viele Zellen ändern Sie mit diesem Code? Ich habe es gerade auf ~ 1,7 Millionen Zellen getestet und ich habe keine Fehler – TMH8885
8,106,860 Zellen auf meinem Praxisdokument erhalten. Das sind 161.363 Zeilen. –
Es scheint bis zu 70k Zeilen zu arbeiten. Zu viel mehr als das, es setzt nur den Wert jeder Zelle im ausgewählten Bereich auf #WERT. –