运行时错误13:类型不匹配,如果在目标的同一行上选择并删除了两个单元格(或多个)



我使用下面的代码将列E上的更改与一些条件相交,其中一个条件是如果目标更改值不为空,则触发,事件的效果应用起来没有问题,但是如果在目标的同一行上选择并删除了两个单元格(或多个(我收到这个错误

运行时错误13:类型不匹配

这是错误Target.value <> ""的原因

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("E:E")) Is Nothing And _
Target.Columns.Count = 1 And _
Target.Row > 1 And _
Target.value <> "" Then

Application.EnableEvents = False
'Some codes here
Application.EnableEvents = True

End If

End Sub

感谢您的评论和回答。

只能选中Target.Columns.Count,但Target也可以是多行。然后Target.value是一个值的数组,如果不循环,就无法将数组与= ""进行比较。

因此,将Target.Columns.Count = 1替换为Target.Cells.CountLarge = 1,以确保Target只是一个单元格,或者循环遍历Target中与范围E:E相交的所有单元格。

Private Sub Worksheet_Change(ByVal Target As Range)

Dim AffectedRange As Range
Set AffectedRange = Intersect(Target, Me.Range("E:E"))
If Not AffectedRange Is Nothing Then
Dim Cell As Range
For Each Cell in AffectedRange
' here you can handle each cell that has changed in E:E
Next Cell
End If
End Sub

主题外注释:

如果您使用Application.EnableEvents = False,请确保在发生错误时重新打开事件!否则,您的事件将在整个Excel中关闭,直到您关闭它。

最新更新