Solución:
Obtendrá un rendimiento mucho mejor copiando los datos en una matriz y trabajando en la matriz, luego colocando los datos nuevamente en el rango.
Además, no use Excel.Application.Trim
. Esa es la sintaxis de Excel 95 y una llamada de destino tardío con manejo de errores inesperados. VBA tiene un Trim
función incorporada: es aproximadamente 10 veces más rápido y proporciona Intellisense.
Sub test()
'Assuming ScenarioTable is a range
Dim ScenarioTable As Range
Set ScenarioTable = Range("ScenarioTable")
'I assume your range might have some formulas, so...
'Get the formulas into an array
Dim v As Variant
v = ScenarioTable.Formula
Dim a As Long
Dim f As Long
'Then loop over the array
For a = LBound(v, 1) To UBound(v, 1)
For f = LBound(v, 2) To UBound(v, 2)
If Not IsEmpty(v(a, f)) Then
v(a, f) = VBA.Trim(v(a, f))
End If
Next f
Next a
'Insert the results
ScenarioTable.Formula = v
End Sub
Hágalo en todo el rango a la vez usando la versión de matriz de Excel Trim
:
myRange.Value = Application.Trim(myRange.Value)
Usando las únicas variables visibles en su código, sería:
With Range(Cells(1,1), Cells(ScenarioTableLastRow, ScenarioTableLastColumn))
.Value = Application.Trim(.Value)
End With
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)