【问题标题】:Excel VBA overlapping error for deleting highlighted rows用于删除突出显示的行的 Excel VBA 重叠错误
【发布时间】:2017-09-11 02:13:02
【问题描述】:

我试图理解为什么这个错误之前没有弹出

Sub deleterow()
   Dim cell As Range, DelRange As Range

   For Each cell In ActiveSheet.Range("A2:G2000")
       If cell.Interior.ColorIndex = 6 Then
           If DelRange Is Nothing Then
               Set DelRange = cell
           Else
               Set DelRange = Union(DelRange, cell)
           End If
       End If
    Next cell

   If Not DelRange Is Nothing Then DelRange.EntireRow.Delete ' error here
End Sub

这是记录的 VBA 宏的一部分,用于删除突出显示的行,但它在 DelRange.EntireRow.Delete 行中显示错误运行时错误“1004”-“无法在重叠选择上使用该命令”。

以前没有发生过。

提前致谢

【问题讨论】:

  • 您收到此错误,因为在某些行中您有 2 个带有 Yellow 内部的单元格,因此您在同一行中添加了 2 个单元格到您的 @ 987654322@,然后尝试将同一行删除两次。即假设“C3”和“G3”都是黄色的,您将它们都添加到DelRange,当您尝试删除DelRange.EntireRow.Delete时,您尝试删除第3行两次 - 从而导致运行-时间错误。
  • 我发现问题出在其中一个没有突出显示的列上,它应该以突出显示的行可能是一个接一个的方式运行。感谢回复:)
  • 一个接一个可以工作,但是使用您的代码,您不能在同一行中有 2 个单元格。除非你稍微改变一下代码的概念
  • 您能进一步解释一下吗?我不太明白您所说的同一行中的 2 个单元格是什么意思。我相信我正在捕获整个范围内的行(“A2:F2000”)并找到要删除的突出显示的行
  • 我很抱歉 YowE3K

标签: excel vba


【解决方案1】:
Sub deleterow()
Dim cell As Range

Application.ScreenUpdating = False

For Each cell In ActiveSheet.Range("A2:G2000")
    With cell
        If .Interior.ColorIndex = 6 Then .EntireRow.Delete
    End With
Next cell

Application.ScreenUpdating = True

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-31
    • 2012-03-09
    • 2012-06-10
    • 2016-04-25
    • 2014-07-24
    • 2014-02-19
    • 2019-09-07
    • 1970-01-01
    相关资源
    最近更新 更多