当我单击工作表上的按钮时,将调用以下事件。
我收到错误“类型不匹配”
如果事件是由于按下按钮引起的,我怀疑我需要另一个 if 语句来停止评估原始 IF?
Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Range("D4") Then 'Error is here
End If
End Sub
这
If Target = Range("D4") Then
相当于这个
If Target.Value = Range("D4").Value Then
这显然不是你想要的。如果Target.Value
碰巧与Range("D4").Value
.
你想要的是这样的:
If Not Intersect(Target, Range("D4")) Is Nothing Then
编辑我只是设法重现您的错误。如果Target
范围的大小不同于Range("D4")
即跨越多个单元格,则会发生这种情况。正如@Dick Kusleiska 所指出的,如果两者之一是错误值,也会发生这种情况。也许它也是由其他事情触发的,我不知道。总之,重点是,你的If
条件不对!
试试这个
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Whoa
Application.EnableEvents = False
If Not Intersect(Target, Range("D4")) Is Nothing Then
End If
LetsContinue:
Application.EnableEvents = True
Exit Sub
Whoa:
MsgBox Err.Description
Resume LetsContinue
End Sub
编辑:
我还建议使用错误处理并将其设置.EnableEvents
为 false 以避免和可能的无限循环:)