Непосредственные проблемы с вашим кодом заключаются в том, что activecell
никогда не назначается, никогда не изменяется и не упоминается в вашем l oop (что включает cell
). Вам все равно не нужно активировать .
При удалении строк или столбцов вы должны l oop назад, чтобы избежать пропуска строк. Для l oop в обратном направлении проще использовать переменную-счетчик для вашего l oop, а не диапазона.
Кроме того, вам действительно нужно go через все миллионы строк? Попробуйте использовать Find
или Autofilter
для более эффективного кода.
Dim physicalstr As String
physicalstr = "Physical"
Dim physrange As Range
Set physrange = ShtTwo.Columns(k)
Dim r As Long
For r = physrange.Count To 1 Step -1
If physrange.Cells(r).Value = physicalstr Then physrange.Cells(r).EntireRow.Delete
Next r