运行时错误在Worksheet_Change

问题描述:

删除行,当我有这个代码的问题:运行时错误在Worksheet_Change

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target Is Nothing Then Exit Sub 
    MsgBox Target.Value 
End Sub 

我输入文本的一些细胞,我得到一个消息框后,但如果我尝试,我删除该行刚进入了一个文本,我得到一个错误:

Run-time error '13': Type mismatch

我怎样才能解决这个问题?为什么这种情况不能抓住它?

+0

对不起,错过了重要的部分MSGBOX Target.Value – yuris 2013-03-20 14:18:58

当您作为结果删除行时,整个行在您的过程中为target对象。因此你的宏不能返回该行的值。

什么程序员通常做的是这是你的消息框前检查附加条件:

If Target.Count =1 Then 
    'your messagebox here 
End If 
+0

这工作。但为什么? – Tyrick 2014-07-14 18:40:40

+0

@Tyrick,其实这个条件与这个'如果Target.Cells.Count = 1'是一样的,这意味着我们检查有多少个单元受到这个变化的影响。如果只有一个我们触发行动,并拒绝所有其他情况,当用户一次更改/删除更多细胞。 – 2014-07-15 05:30:46