Метод «Удалить» диапазона Excel VBA случайно завершается ошибкой - PullRequest
1 голос
/ 03 апреля 2019

Фон

У меня есть фрагмент кода 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 ... такИногда удаление работает, а иногда - нет, даже если оно работает на одном листе.Ошибка не генерируется.

Кто-нибудь сталкивался с подобной ситуацией / есть мысли?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...