-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

これらは2つの用途にすぎませんが、あなたの質問に関連しています:

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 に答える