Vba Excel:“;运行时错误-2147417848(80010108)";方法';删除';对象的';范围';失败

Vba Excel:“;运行时错误-2147417848(80010108)";方法';删除';对象的';范围';失败,vba,excel,ms-office,conditional-formatting,Vba,Excel,Ms Office,Conditional Formatting,我有一个宏,可以删除Excel中受保护工作表中的选定表行,每当运行代码时,我都会收到标题中的错误。当我在工作表中引入10个条件格式规则时,这个问题就开始出现了,如果我清除了工作表中的任何条件格式,我就可以删除任意多的行。我的代码删除了下面的表行,以及调试指向的清除错误的位置 Sub DeleteRow() Application.EnableEvents = False Application.ScreenUpdating = False Sheet1.Unpr

我有一个宏,可以删除Excel中受保护工作表中的选定表行,每当运行代码时,我都会收到标题中的错误。当我在工作表中引入10个条件格式规则时,这个问题就开始出现了,如果我清除了工作表中的任何条件格式,我就可以删除任意多的行。我的代码删除了下面的表行,以及调试指向的清除错误的位置

Sub DeleteRow()

    Application.EnableEvents = False    
    Application.ScreenUpdating = False
    Sheet1.Unprotect Password:="Password!"
    Dim rng As Range    
    On Error Resume Next
    With Selection.Cells(1)
        Set rng = Intersect(.EntireRow, ActiveCell.ListObject.DataBodyRange)
        On Error GoTo 0
        If rng Is Nothing Then
            MsgBox "Please select a valid table cell.", vbCritical
        Else
            rng.Delete xlShiftUp   'This is the line where the debug is pointing to
        End If
    End With
    Sheet1.Protect Password:="Password!"
    Application.EnableEvents = True

End Sub
谢谢你的帮助

*更新编号#Ref!我的任何条件格式公式都有错误。 **更新我有大约10个条件格式公式,下面略有变化

=AND(COUNTIFS($E$14:$E$17,$E14,$J$14:$J$17,"Black")>1,$J14="Black")
=AND(COUNTIFS($E$14:$E$17,$E14,$J$14:$J$17,"White")>1,$J14="White")
=AND(COUNTIFS($E$14:$E$17,$E14,$J$14:$J$17,"Green")>1,$J14="Green")

最可能的情况是条件格式有一个#REF某个地方出错,因此Excel不允许删除。要查看条件格式中的所有公式,请运行以下命令:

Sub ListAllConditionalFormat()

    Dim cf      As FormatCondition
    Dim ws      As Worksheet
    Dim l       As Long
    Dim rngCell As Range

    On Error Resume Next

    Application.EnableEvents = False
    Application.ScreenUpdating = False
    Worksheets("Report").Cells.Clear

    For Each ws In ThisWorkbook.Worksheets
        Debug.Print ws.Name

        For Each cf In ws.Cells.FormatConditions
            l = 1 + l
            With Worksheets("Report")
                Set rngCell = .Cells(l, 1)
                rngCell = cf.AppliesTo.Address
                rngCell.Offset(0, 1) = cf.Type
                rngCell.Offset(0, 2) = "'" & cf.Formula1
                rngCell.Offset(0, 3) = cf.Interior.Color
                rngCell.Offset(0, 4) = cf.Font.Name
                rngCell.Offset(0, 5) = ws.Name
                rngCell.Offset(0, 6) = "'" & cf.AppliesTo.AddressLocal
                rngCell.Offset(0, 7) = "'" & cf.Formula2
            End With
        Next cf
    Next ws
    Debug.Print "END!"

End Sub

只需确保您有一个名为
Report
的工作表,其中所有内容都是空的。条件格式的信息将在那里。寻找#REF错误,并在看到错误后立即修复。

Hmmmm。。。我创建了tblReport工作表,但在运行代码时什么也没有出现。我确保它是第一张工作表,有什么想法吗?@MSauce-再次查看代码,并将表从
tblReport
重命名为
Report
,我已经编辑了它。很遗憾,没有#REF!如果出现错误,问题仍然存在:(@MSauce-还有其他错误吗?一般来说,在出现错误的行之前,写
rng。选择:Stop
,它将停止。然后看看该范围上的条件格式。我想应该有一些奇怪的东西…也不起作用,我已经编辑了我的问题以反映更改。我非常感谢你的建议。