2013-02-13 128 views
0

當執行以下VB代碼和「跟蹤修改」功能開啓我在MS Excel遇到錯誤:VB Excel中錯誤

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.Column = 1 Then 
     If IsEmpty(Target) Then 
      Target.Offset(0, 1).Value = Empty 
     Else 
      Target.Offset(0, 5).Value = Now() 
     End If 

    End If 

End Sub 

看來,我可以將數據輸入到第一2行很好,但一旦我開始填充第三行和之後的數據,我得到一個錯誤,指出「運行時錯誤」1004'應用程序定義或對象定義的錯誤「。

+0

這是在vb.net或在Excel的VBA編輯器中(例如'Developer Tab - > Visual Basic')?你可以在編輯器中添加一個斷點來辨別這個錯誤在代碼中被拋出的位置嗎? – Sam 2013-02-13 17:11:51

+0

這在Excel 2010中適用於我。請注意,在Excel 2010(可能是2007)中跟蹤更改爲ON時,您可能無法在共享工作簿文件中使用宏。 – 2013-02-13 18:03:52

+0

另請注意,您可能希望在此代碼的開頭使用'Application.EnableEvents = False',並在此代碼的末尾使用'Application.EnableEvents = True'來防止不必要的循環(if/else語句ALSO會觸發_Change事件並且第二次觸發宏,這是不必要的)。 – 2013-02-13 18:16:46

回答

0

變更跟蹤強制工作簿變爲共享,這將禁用許多功能(例如,您無法通過啓用更改跟蹤訪問VBA)。

我不能完全肯定爲什麼被拋出這個錯誤,但有解決方法,以避免看到此消息將Resume Next時出現錯誤:

On Error Resume Next

只需添加這行關於您的第一個If區塊的代碼(If Target.Column = 1 Then)。請注意,理想情況下,您應該想要辨別此問題的來源,並且此解決方案是一種解決方法,這可能不是一種好的做法。

0

我得到從第2行開始的錯誤,並使用此代碼打開跟蹤更改。代碼似乎做它應該做的事情,無論錯誤,所以我會建議一個On Error Resume Next解決。

這並沒有解決更改跟蹤的任何潛在問題,您的更改可能未被跟蹤。