-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

对于上述表达式,

我只会在 format() 不为空时运行它。但是,我意识到有时内容可能不是空的,而是内容不可格式化的内容,例如“评论”,甚至可能是日期的拼写错误,例如缺少 /。所以,我只是想知道是否有办法让代码继续出错并只返回一个 msgbox 而不是完全停止?

4

2 回答 2

2

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

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

1)On Error Goto Label这将转到Label您定义的位置,方法是编写该标签,您希望代码在出现错误后恢复执行,并在其后面加上分号Label:

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

于 2013-05-20T03:59:52.513 回答
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
于 2013-05-20T04:00:03.447 回答