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而不是完全停止?
答案 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