2013-05-20 54 views
-1
If CheckContractStart(MoreMemoryBlock(i)) <> "" Then 
    Cells(RowCount + i, 3).Value = Format(DateValue(CheckContractStart(MoreMemoryBlock(i))), "dd MMM yyyy") 
Else 
    Cells(RowCount + i, 3).Value = "Missing" 
End If 

對於上述表達式中,如何獲取以下代碼以繼續出現錯誤?

我只運行格式(),當它不是空的。然而,我意識到有時內容可能不是空的,而是內容不可形成的內容,例如「評論」或者甚至可能是諸如缺少/的日期錯誤等。所以,我只是想知道是否有辦法讓代碼繼續出錯,只是返回一個msgbox而不是完全停止?

回答

2

與包裹上的錯誤代碼繼續下一步......對錯誤轉到0

On Error Resume Next 
If CheckContractStart(MoreMemoryBlock(i)) <> "" Then 
    Cells(RowCount + i, 3).Value = Format(DateValue(CheckContractStart(MoreMemoryBlock(i))), "dd MMM yyyy") 
Else 
    Cells(RowCount + i, 3).Value = "Missing" 
End If 
On Error GoTo 0 
2

是的。在VBA中,您可以使用關鍵字On Error

這些都是隻有兩個用途,但他們有關你的問題:

1)On Error Goto Label這會去Label您通過以下就寫,你想你的代碼錯誤後繼續執行該標籤定義用分號Label:

2)On Error Resume Next這將完全忽略錯誤。您可能希望進行一些錯誤檢查,以使您的代碼更加穩定,但有時候這樣做有必要和/或有幫助,儘管它可能很危險。

相關問題