Me temo que tu código tiene varios errores sintácticos y alguno semántico que hacen imposible que funcione. Por ejemplo, no te debe funcionar
Rows("cnt:cnt").Select
porque "cnt:cnt" es un string. En su lugar es:
Rows(cnt & ":" & cnt).Select
Aun así tienes que tener en cuenta que al mover filas se producen eventos que modifican la hoja y por tanto la macro vuelve a ejecutarse desde el inicio y así infinitamente mientras haya cualquier cambio. Hay que desactivar los eventos una vez dentro y dejarlos activos antes de salir.
Si me permites un consejo es mejor dejar en el código de la hoja solo la llamada a la macro junto con la desactivación de eventos y en un módulo el cuerpo de la función. Esto da mas flexibilidad a la hora de hacer las cosas. Sería algo como:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Call Ordena
Application.EnableEvents = True
End Sub
Y para el módulo un código que funcione:
Sub Ordena()
Dim i As Integer
Dim maxi As Integer
Dim mini As Integer
maxi = Range("A6500").End(xlUp).Row
i = maxi
mini = 3
While i >= mini
If Cells(i, 1) = "Procesando" Then
Rows(i & ":" & i).Select
Selection.Cut
Rows("2:2").Select
Selection.Insert Shift:=xlDown
mini = mini + 1
Else 'paso a la siguiente fila
i = i - 1
End If
Wend
i = 3
While i < maxi
If Cells(i, 1) = "Terminado" Then
Rows(i & ":" & i).Select
Selection.Cut
Rows(maxi + 1 & ":" & maxi + 1).Select
Selection.Insert Shift:=xlUp
maxi = maxi - 1
Else 'paso a la anterior fila
i = i + 1
End If
Wend
End Sub
Aunque un código que hace lo mismo en un paso, basado en la order sort, como bien decías sería:
Sub OrdenaV2()
Columns("A:A").Select
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("A1"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").Sort
.SetRange Range("A2", Range("B2").End(xlDown))
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Este código asume que los campos para ordenar están en la columna A y el rango a ordenar son las filas rellenas de las columnas A y B. Seguramente tendrás que adaptarlo a tu modelo.
Por último, mira a ver si realmente necesitas que la macro funcione con cada cambio en la hoja por mínimo que sea. Tal vez es mejor asociar la macro a un botón o una combinación de teclas y ejecutarla cuando sea necesario solo. Una forma de no olvidarlo es cambiar los colores de los estados con el formato condicional. Asi rápidamente vas a notar una palabra de un color rodeada de palabras de diferente color y podrás ver que has de correr la macro que ordena.