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

问题描述:

我的代码大部分工作,但是当我清除新条目的数据范围时,我得到运行时错误13并且必须结束当前宏在我可以重新启动我的数据项之前。最重要的是,之前突出显示的单元格保持突出显示。任何想法如何防止这一点? enter image description herevba条件格式 - 运行时错误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可能不止一个小区
  • 获取目标和你的兴趣范围之间的相交,并操作上相交范围 :如果您只是检查是否有任何相交并继续在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 
+0

感谢你的输入,但我不知道如果我完全明白了第二和第三的公告。 'c'是这种情况吗? –

+0

C将是构成更新范围的每个单个单元格。看到我的更新代码 –

+0

,完美的工作!非常感谢你! –