Страница: 1 |
Вопрос: Удаляем пустые ряды | Добавлено: 04.12.08 13:20 |
Автор вопроса: ![]() |
Доброго времени суток.
Есть следующий код: 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 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 23 Ответов: 417 |
Профиль | Цитата | #1 | Добавлено: 04.12.08 15:02 |
Попробуй исправить
на:
Все удаляется за один проход. |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 33 Ответов: 245 |
Профиль | Цитата | #2 | Добавлено: 04.12.08 15:15 |
Хоть разницы ни какой, но попробовал. Таже ситуация, что и в первоначальном варианте. |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 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 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 33 Ответов: 245 |
Профиль | Цитата | #4 | Добавлено: 04.12.08 15:29 |
Прошу прощения не iCurrentRow, а iStartRow )) |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 5 Ответов: 276 |
Web-сайт: Профиль | Цитата | #5 | Добавлено: 04.12.08 17:19 |
____ Я бы удалял с конца, тогда не будет пропусков. И я бы брал только "существующие" строки, а не все на листе (через UsedRange). |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 23 Ответов: 417 |
Профиль | Цитата | #6 | Добавлено: 04.12.08 17:22 |
На мой взгляд, разница в том, из какой колонки получать последнюю заполненную ячейку.
Я так поняла, что нужно удалить строки с пустой ячейкой в 4 столбце/колонке. Правильно ? Если да, то взяла твой код один в один, исправив только вышенаписанную мной строку и все нормально удаляется. За один проход. |
Страница: 1 |
|