Puedes hacer lo siguiente:
Si los cálculos ya están realizados, entonces apaga el cálculo
Application.Calculation = xlCalculationManual
De esta forma cada vez que borras una celda no se tienen que recalcular las fórmulas, puede ser así:
Apagas el cálculo al principio de tu marco y cuando terminas de limpiar las celdas vuelves a prender el cálculo:
Application.Calculation = xlCalculationManual
'
For Each Celda In Range("A10:A19,C10:C19,E10:E19" & UltFila)
If (Celda.Value > 0) Then Celda.ClearContents
Next Celda
'
Application.Calculation = xlCalculationAutomatic
Ahora en tu macro tienes una situación en esta línea
For Each Celda In Range("A10:A19,C10:C19,E10:E19" & UltFila)
Lo que dice tu línea es: para cada celda en los rangos A10:A19,C10:C19,E10:E19, hasta ahí todo bien, pero después del E19" tienes esto: "& UltFila.
Entonces si tu última fila vale, por ejemplo 500, entonces el último rango va a ser :
De E10 hasta E19 & 500, es decir:
De E10 hasta E19500
Entonces la macro va a revisar hasta la celda E19500 (diecinueve mil quinientos).
Si tu intención es revisar de E10 a E19, entonces quita esto: "& UltFila".
Te quedaría así:
For Each Celda In Range("A10:A19,C10:C19,E10:E19")
Prueba la opción 1, luego prueba la opción 2 y luego prueba las 2 opciones juntas.
Si todavía es lento prueba con esta tercera opción:
'Por. Dante Amor
Application.Calculation = xlCalculationAutomatic
Set r = Range("A10:A19,C10:C19,E10:E19" & UltFila)
Set b = r.Find(0, lookat:=xlWhole)
If Not b Is Nothing Then
ncell = b.Address
Do
Set b = r.FindNext(b)
b.Value = ""
Loop While Not b Is Nothing And b.Address <> ncell
End If
Incluso puedes combinar la tercera opción con las opciones 1 y 2.
'Por.Dante Amor
Application.Calculation = xlCalculationManual
Set r = Range("A10:A19,C10:C19,E10:E19" & UltFila)
Set b = r.Find(0, lookat:=xlWhole)
If Not b Is Nothing Then
ncell = b.Address
Do
Set b = r.FindNext(b)
b.Value = ""
Loop While Not b Is Nothing And b.Address <> ncell
End If
Application.Calculation = xlCalculationAutomatic
o así
'Por.Dante Amor
Application.Calculation = xlCalculationManual
Set r = Range("A10:A19,C10:C19,E10:E19")
Set b = r.Find(0, lookat:=xlWhole)
If Not b Is Nothing Then
ncell = b.Address
Do
Set b = r.FindNext(b)
b.Value = ""
Loop While Not b Is Nothing And b.Address <> ncell
End If
Application.Calculation = xlCalculationAutomatic
Prueba todas las opciones y si todavía es lento revisamos otra opción.
Saludos. Dante Amor
No olvides valorar la respuesta.