Código en bucles VBA y nunca termina. ¿Cómo arreglar esto?

Ejecuto este código para eliminar las filas que tienen> -100. Sin embargo, sigue dando vueltas y nunca se detiene.

¿Que me estoy perdiendo aqui?

For i = 2 To 500 If Worksheets("Sales").Cells(i, 3).Value > -100 Then Worksheets("Sales").Cells(i, 3).EntireRow.Delete i = i - 1 End If Next i 

¿Tal vez podrías unir las filas y borrarlas de una vez? Algo como esto (no probado).

 Dim myRow As Range Dim toDelete As Range For i = 2 To 500 If Worksheets("Sales").Cells(i, 3).Value > -100 Then Set myRow = Worksheets("Sales").Rows(i) If toDelete Is Nothing Then Set toDelete = myRow Else Set toDelete = Union(toDelete, myRow) End If End If Next i If Not toDelete Is Nothing Then _ toDelete.Delete 

Al eliminar o insertar filas en VBA, debe comenzar con la última fila y avanzar hacia la primera , ya que cualquier fila determinada se perderá en el bucle una vez que se haya eliminado o se hayan insertado nuevas filas.

Vea el código a continuación:

 For i = 500 To 2 Step -1 If Worksheets("Sales").Cells(i, 3).Value > -100 Then Worksheets("Sales").Cells(i, 3).EntireRow.Delete End If Next I 

EDITAR

También pensé en esto, que se ejecutará mucho más rápido (especialmente si tienes mucho más de 500 células):

 With Worksheets("Sales") 'assumes row 1 is headers .Range("C1:C500").AutoFilter 1, ">-100" .Range("C2:C500").SpecialCells(xlCellTypeVisible).EntireRow.Delete .AutoFilterMode = False End With