按下按钮时VBA事件会引发错误吗?

mez*_*hic 4 excel vba excel-vba

当我单击工作表上的按钮时,将调用以下事件.

我收到错误'Type mismatch'

我怀疑如果事件是由于按下按钮,我需要另一个if语句来停止评估原始IF?

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target = Range("D4") Then   'Error is here

    End If

End Sub
Run Code Online (Sandbox Code Playgroud)

Jea*_*ett 5

这个

If Target = Range("D4") Then
Run Code Online (Sandbox Code Playgroud)

相当于此

If Target.Value = Range("D4").Value Then
Run Code Online (Sandbox Code Playgroud)

这显然不是你想要的.如果Target.Value碰巧与您的错误类型相同,您可能会得到您描述的错误Range("D4").Value.

你想要的是这个:

If Not Intersect(Target, Range("D4")) Is Nothing Then
Run Code Online (Sandbox Code Playgroud)

编辑我刚设法重现你的错误.如果Target范围与Range("D4")跨越多个单元格的大小不同,则会发生这种情况.正如@Dick Kusleiska指出的那样,如果其中一个是错误值,也会发生这种情况.也许这也是由其他事情引发的,我不知道.无论如何,重点是,你的If情况是错误的!