vba 条件格式 - 运行 清除数据时出现时间错误 13

vba Conditional Formatting - Run Time Error 13 when clearing Data

我的代码大部分工作,但是当我清除新条目的数据范围时,我得到 运行-time error 13 并且必须结束当前的宏才能重新启动我的数据条目。最重要的是,之前突出显示的单元格仍然突出显示。知道如何防止这种情况吗? enter image description here

我的代码是:

Private Sub Worksheet_Change(ByVal Target As Range)

Set lowspec = Range("i6")
Set highspec = Range("m6")
Set i = Intersect(Target, Range("f16:l34"))
If Not i Is Nothing Then
Select Case Target
    Case 1 To lowspec: newcolor = 3
    Case highspec + 1 To 1000: newcolor = 3
End Select
Target.Interior.ColorIndex = newcolor
End If



End Sub

一次更改多个单元格时,Target代表整个范围,所以Select Case Target会出问题。

以下是您需要为此编写代码的方式:

  • 始终假设 Target 可能不止一个单元格
  • 获取Target和你感兴趣的区间的交集,对该区间进行操作:如果你只是检查是否有交集,然后继续操作Target,其中可能仍包含您感兴趣范围之外的单元格。
  • 如果需要,逐个像元地对该交点执行所有操作。

类似于:

 Private Sub Worksheet_Change(ByVal Target As Range)

    Dim lowSpec As Double, highSpec As Double, newcolor
    Dim i As Range, c As Range, v

    lowSpec = Me.Range("i6")
    highSpec = Me.Range("m6")

    Set i = Intersect(Target, Me.Range("f16:l34"))
    If Not i Is Nothing Then

        For Each c In i.Cells
           v = c.Value
           If Len(v) > 0 Then
               Select Case v
                   Case 1 To lowSpec: newcolor = 3
                   Case highSpec + 1 To 1000: newcolor = 3
               End Select
           Else
               newcolor = xlNone
           End If
           c.Interior.ColorIndex = newcolor
        Next c

    End If
 End Sub