通过单元格选择键入不匹配错误

时间:2017-03-13 16:37:07

标签: excel excel-vba vba

我创建了这个监视列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

1 个答案:

答案 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