我创建了这个监视列B的基本worksheet_change函数。如果列B中的单元格被删除,它也会更新C列中的删除。唯一的问题是,由于这是一个更改事件,当一次更改超过2个单元格时,它会抛出类型不匹配错误。这是因为它将Target.Address(s)与""进行了比较。这是一种类型不匹配。如果只选择一个单元格而不是多个单元格选择崩溃,我该如何解决此问题呢?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = Range("B2:B51")
If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
If Range(Target.Address).Value = "" Then
Range("C" & Target.Row).Clear
End If
End If
End Sub
答案 0 :(得分:2)
要简单检查Target
范围是否更改为多个单元格,您只需计算范围内的单元格。
正如评论中所提到的,在您声明sub之后,您可以添加:
If Target.Count > 1 Then Exit Sub
。
或者,您当然可以做If Target.Count = 1 Then ...
编辑:根据您的上述问题,您可以执行此操作以确保事件已开启:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then
Application.EnableEvents = True
Exit Sub
End If
' Code here that will run, if the Target is just one cell
End Sub