Excel可见细胞删除 - 破碎

时间:2017-04-21 19:40:27

标签: excel vba

我有一个vba代码,它使用数据表中的自动过滤器来识别第一列中具有“True”的记录并删除可见行。我的代码工作了几个月没有问题,但今天它停止工作并产生1004没有发现记录错误。问题是,我可以看到可见的行,如果我在调试模式下遍历代码,它工作正常。它是导致问题的wholerow.delete行。谁能帮我弄清楚是什么让它停止工作?

Public Class DB2RS
    Public Shared Function SetDBCon( _
       ByRef dbCon As OleDbConnection, _
       ByRef Dts As Microsoft.SqlServer.Dts.Tasks.ScriptTask.ScriptObjectModel, _
       ByRef strError As String _
   ) As Boolean

1 个答案:

答案 0 :(得分:0)

您删除以前的AutoFilter的方式对我来说很可疑。 Eben虽然过去“有效”,但可能取决于版本和其他情况。另外,不要忘记AutoFilter始终将第一行视为标题行,即使不是这样。所以你不应该删除自动过滤后的标题行。尝试用这种方式重写这段代码:

    With Sheets("Master Data")
        If .FilterMode Then .ShowAllData
        If .AutoFilterMode Then .Cells.AutoFilter
        With .Range("$A$1:$B" & lastRowall)
            .AutoFilter Field:=1, Criteria1:="True"

            '.offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
            '^^^^^^^^^
           ' You can also delete directly, delete acts only on visible cells

            .offset(1).EntireRow.Delete
            .AutoFilter
        End With
    End With