如何让以下代码继续出错?

时间:2013-05-20 03:56:35

标签: excel-vba vba excel

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

对于上面的表达式,

我只会在它不为空时运行format()。但是,我意识到有时内容可能不是空的,而是内容不可形成的内容,例如&#34;评论&#34;或者甚至可能是错过/等日期的拼写错误。所以,我只是想知道是否有办法让代码继续出错并返回一个msgbox而不是完全停止?

2 个答案:

答案 0 :(得分:2)

是。在VBA中,您可以使用关键字On Error

这些只是两种用途,但它们与您的问题相关:

1)On Error Goto Label这将转到Label,您可以通过将该标签写入您希望代码在发生错误后继续执行的位置,并使用分号Label:进行定义

2)On Error Resume Next这将完全忽略错误。您可能希望进行一些错误检查以使您的代码更稳定,但有时这是必要的和/或有帮助的,即使它可能是危险的。

答案 1 :(得分:2)

使用On Error Resume Next包裹您的代码... On Error GoTo 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