Фон
У меня есть фрагмент кода VBA, который удаляет несколько строк на листе в зависимости от того, являются ли значения в каждой строке ИСТИНА или ЛОЖЬ в определенном столбце (элемент управленияспектр').Рабочие таблицы переключаются как главный цикл (выше уровня этой функции), который циклически перебирает несколько листов и рабочих книг.
Это используется в Excel 2013 и 2016
Естественно, код ищетсопоставление строк и создание объекта диапазона, и только после окончания цикла этот гнев удаляется.
Извлечение кода
Я не могу отправить копию фактическогокнига слишком большая, слишком сложная, и у меня нет времени объяснять, как она работает - кроме того, она конфиденциальна.
Я привел ниже фрагмент кода, который не работает (с помощью командыэто выделено жирным шрифтом).
' Build up a list of rows which are valid
For Each rngCurControlCell In rngSheetControlRange.Cells
If rngCurControlCell.Value = True Then
If rngRowsToDelete Is Nothing Then
Set rngRowsToDelete = rngCurControlCell.EntireRow
Else
Set rngRowsToDelete = Union(rngCurControlCell.EntireRow, rngRowsToDelete)
End If
End If 'rngCurControlCell.Value = True
Next rngCurControlCell
' Delete the rows
If Not rngRowsToDelete Is Nothing Then rngRowsToDelete.Delete
Проблема / проблема
Иногда этот код работает, а иногда нет.
Я поставил различныеотладка в коде и может подтвердить, что код всегда находит целевые строки ('rngRowsToDelete' в приведенном выше извлечении) и всегда правильно создает объект диапазона.
HOWEVER ... такИногда удаление работает, а иногда - нет, даже если оно работает на одном листе.Ошибка не генерируется.
Кто-нибудь сталкивался с подобной ситуацией / есть мысли?