2016-08-04 2 views
0

Я хочу удалить любую строку с числовым значением в ячейке. Когда я запускаю следующий код, он правильно оценивает функции IsEmpty и IsNumeric() и удаляет строку. Однако он останавливается по какой-то причине и завершится после 3 попыток. Примечание. Я пробовал Cell.Value и Cell.Value2.Vba Loop для удаления строк с числовым значением в ячейке

For Each Cell In Range("H1:H600") 
    If Not IsEmpty(Cell) Then 
     If IsNumeric(Cell.Value) Then 
      Cell.EntireRow.Delete 
     End If 
    End If 
Next 
+1

при удалении идти снизу вверх, вы получите гораздо более стабильные результаты. – sous2817

+1

Это потому, что когда вы удаляете строку, другие строки набираются. Если вы удаляете 1, уменьшите i на 'i = i-1' –

+1

Вам нужно пройти назад или пропустить строки. См. Здесь три варианта; http://stackoverflow.com/questions/33744149/code-in-vba-loops-and-never-ends-how-to-fix-this –

ответ

1

Если у вас нет формул в этом диапазоне:

Range("H1:H600").SpecialCells(xlCellTypeConstants, xlNumbers).EntireRow.Delete 
+0

Я думал о том же, но некоторые его номера могут быть сохранены как текст – Slai

+0

Это также удалит любые числа отформатирован как текст –

+0

Извинения за поздний ответ. Это сработало и, очевидно, намного быстрее, чем у меня. благодаря – user2336288

Смежные вопросы