Удаление строк из Excel является довольно «дорогой» задачей, поэтому для экономии времени это следует делать не построчно, а сразу:
Sub RemoveRows()
Dim rowsToDelete As Range
Dim cnt As Long
Dim currentlastRow As Long
Dim ws As Worksheet
Dim myCell As Range
Set ws = Worksheets(1)
currentlastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
For cnt = 1 To currentlastRow
Set myCell = ws.Cells(cnt, 1)
If Len(myCell.Value2) < 6 Then
If rowsToDelete Is Nothing Then
Set rowsToDelete = myCell.EntireRow
Else
Set rowsToDelete = Union(rowsToDelete, myCell.EntireRow)
End If
End If
Next cnt
If Not rowsToDelete Is Nothing Then
rowsToDelete.Delete
End If
End Sub
Таким образом, в приведенном выше коде rowsToDelete
- это диапазон с ячейками, которые должны быть удалены. Удаление выполняется только один раз:
If Not rowsToDelete Is Nothing Then
rowsToDelete.Delete
End If