Excel VBA范围“删除”方法随机失败

时间:2019-04-03 09:52:06

标签: excel vba

背景

我有一段VBA代码,该代码会删除工作表上的多行,具体取决于每一行的值在特定列(“控制范围”)中为TRUE还是FALSE。工作表被切换为一个主循环(在此功能级别之上),该主循环在多个工作表和工作簿之间循环。

在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”),并且始终正确地建立范围对象。

但是... ...有时删除有效,有时却无效-即使它针对同一工作表运行。没有错误产生。

有人遇到过类似情况/有什么想法吗?

0 个答案:

没有答案