Vba Excel:“;运行时错误-2147417848(80010108)";方法';删除';对象的';范围';失败
我有一个宏,可以删除Excel中受保护工作表中的选定表行,每当运行代码时,我都会收到标题中的错误。当我在工作表中引入10个条件格式规则时,这个问题就开始出现了,如果我清除了工作表中的任何条件格式,我就可以删除任意多的行。我的代码删除了下面的表行,以及调试指向的清除错误的位置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
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
,它将停止。然后看看该范围上的条件格式。我想应该有一些奇怪的东西…也不起作用,我已经编辑了我的问题以反映更改。我非常感谢你的建议。