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



我的代码在大部分时间都可以使用,但是当我清除新条目的数据范围时,我会得到运行时错误13,并且必须结束当前宏重新启动我的数据输入。最重要的是,突出显示先前的细胞仍然突出显示。知道如何防止这种情况吗?在此处输入图像描述

我的代码是:

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可能不止一个单元格
  • 获得目标与您的兴趣范围之间的相交,在该Intersect范围上进行操作:如果您只检查是否存在任何相交并继续在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

相关内容

最新更新