2013-03-20 84 views
1

刪除行,當我有這個代碼的問題:運行時錯誤在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

回答

1

當您作爲結果刪除行時,整個行在您的過程中爲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