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
感谢你的输入,但我不知道如果我完全明白了第二和第三的公告。 'c'是这种情况吗? –
C将是构成更新范围的每个单个单元格。看到我的更新代码 –
,完美的工作!非常感谢你! –