Страница: 1 |
Страница: 1 |
Вопрос: Удаляем пустые ряды
Добавлено: 04.12.08 13:20
Автор вопроса: AngryBadger
Доброго времени суток.
Есть следующий код:
Sub Del()
Dim iStartRow As Integer
Dim iLastRow As Integer
iStartRow = 4
iLastRow = Columns(1).Rows(65536).End(xlUp).Row + 1
Do until iStartRow = iLastRow + 1
If Cells(iStartRow, 4).Value = Empty Then
Rows(iStartRow).Delete shift = xlUp
End If
iStartRow = iStartRow + 1
Loop
End Sub
Проблема в том, что удаляются не все ряды с пустой ячейкой в 4 колонке. Но самое интересное, если прогнать код раз 5 - все получается. Есть ли какой нибудь способ не включать For - Next, а продолжать использовать Do Loop?
Заранее спасибо.
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
Jasmin
Вопросов: 23
Ответов: 417
Профиль | | #1
Добавлено: 04.12.08 15:02
Попробуй исправить
на:
Все удаляется за один проход.
Номер ответа: 2
Автор ответа:
AngryBadger
Вопросов: 33
Ответов: 245
Профиль | | #2
Добавлено: 04.12.08 15:15
Хоть разницы ни какой, но попробовал. Таже ситуация, что и в первоначальном варианте.
Номер ответа: 3
Автор ответа:
AngryBadger
Вопросов: 33
Ответов: 245
Профиль | | #3
Добавлено: 04.12.08 15:27
Всем спасибо, проблему решил. Все было из-за:
.Delete shift = xlUp
, при удалении ряда значение iCurrentRow перескакивало через ячейку, поэтому добавил:
iLastRow = Columns(1).Rows(65536).End(xlUp).Row - 1
iCurrentRow = iCurrentRow - 1
Номер ответа: 4
Автор ответа:
AngryBadger
Вопросов: 33
Ответов: 245
Профиль | | #4
Добавлено: 04.12.08 15:29
Прошу прощения не iCurrentRow, а iStartRow ))
Номер ответа: 5
Автор ответа:
ADSemenov.ru
Вопросов: 5
Ответов: 276
Web-сайт:
Профиль | | #5
Добавлено: 04.12.08 17:19
____ Я бы удалял с конца, тогда не будет пропусков. И я бы брал только "существующие" строки, а не все на листе (через UsedRange).
Номер ответа: 6
Автор ответа:
Jasmin
Вопросов: 23
Ответов: 417
Профиль | | #6
Добавлено: 04.12.08 17:22
На мой взгляд, разница в том, из какой колонки получать последнюю заполненную ячейку.
Я так поняла, что нужно удалить строки с пустой ячейкой в 4 столбце/колонке. Правильно ? Если да, то взяла твой код один в один, исправив только вышенаписанную мной строку и все нормально удаляется. За один проход.