Обычно я удалял бы строки, используя For-L oop с номерами строк, работая в обратном направлении, что выглядело бы примерно так:
For rowIndex = 10 to 1 Step (-1)
'delete Row with current row index
next rowIndex
Как это сделать при циклическом переключении указанный диапазон ячеек? Следующий код, очевидно, не будет работать (он пропустит ячейку / строку на следующей итерации после выполнения команды удаления, отметьте здесь или здесь ):
Dim someRange as Range
'Note: someRange might be a multi area range (multiple unadjoined cells) within one sheet
Dim singleCell as Range
For each singleCell In SomeRange.Cells
'check for some condition e.g. based (but not limited to) the singleCell's value
If condition = True then
singleCell.EntireRow.Delete
'Note: the deletion has to be done before the next loop-iteration starts
'Unfortunately, this makes solutions like working with Union unfeasible
End If
Next singleCell
Кто-нибудь знает, как заставить работать второй блок кода без переключения на «Backward-Row-Number-L oop» (см. Первый блок кода)? Есть ли способ как-то "сбросить" указатель / счетчик singleCell на новое значение, чтобы l oop не пропускал следующую ячейку / строку? Или любой другой альтернативой (например, заставить Range-L oop работать в обратном направлении и т.д. c.)? Любая подсказка для решения будет принята с благодарностью, код также обрезан, но при необходимости я могу обойтись без.
Я должен избегать добавления нежелательной строки в массив (range et c.) И удаления весь массив после l oop сделано. К сожалению, как условие для реализации, строка должна быть удалена до того, как будет вычислена следующая ячейка.
По существу, может быть случай, когда две ячейки, строки которых должны быть удалены, будут находиться в одной строке. В этом случае вторая ячейка будет удалена еще до того, как она будет проверена, это желаемое поведение. Решение не должно, но должно быть расширяемым, чтобы включить этот случай.
РЕДАКТИРОВАТЬ: Другое решение, о котором я думаю, - это поменять диапазон перед выполнением For-L oop ( см. Здесь ), пока я еще не пробовал.