按下button时VBA事件抛出错误?
当我点击工作表上的一个button时,会调用下面的事件。
我得到错误“types不匹配”
我怀疑我需要另一个if语句来停止原来的IF被评估如果事件是由于一个button被按下?
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
types不同,那么您可能会得到您描述的错误。
你想要的是这样的:
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
编辑 :
我也build议使用error handling,并将.EnableEvents
设置为false以避免和可能无休止的循环:)