ドキュメント テンプレート マクロを変更しています。やり方がわからないのは、エラー メッセージをカスタマイズすることです。たとえば、ドキュメント内のエラー メッセージは次のとおりです。
「エラー! 図表エントリが見つかりません」
これを変更して別のものを表示したいと思います。Word VBA または VBScript でこれを行うことは可能ですか?
これをある種のグローバルエラーハンドラーに入れることは可能ですか?–クレイグ
可能です。これは非常に大まかな例です。
標準モジュールの場合:
Sub HandleErr(ErrNo As Long)
Select Case ErrNo
Case vbObjectError + 1024
MsgBox "No table of figures entries found.", vbOKOnly + vbCritical
Case vbObjectError + 1034 To vbObjectError + 4999
MsgBox "Still no table of figures entries found.", vbOKOnly + vbCritical
Case Else
MsgBox "I give up.", vbOKOnly + vbCritical, _
"Application Error"
End Select
End Sub
いくつかのコード:
Sub ShowError()
Dim i As Integer
On Error GoTo Proc_Err
'VBA Error
i = "a"
'Custom error
If Dir("C:\Docs\TableFigs.txt") = "" Then
Err.Raise vbObjectError + 1024
End If
Exit_Here:
Exit Sub
Proc_Err:
If Err.Number > vbObjectError And Err.Number < vbObjectError + 9999 Then
HandleErr Err.Number
Else
MsgBox Err.Description
End If
End Sub
VBA で特定のエラー タイプをトラップする場合、1 つの方法として On Error Resume Next を使用し、トラップするアクションの次の行でエラー メッセージをテストします。次に例を示します。
On Error Resume Next
' try action
If Err.Number <> 0 Then
' handle w/ custom message
Err.Clear
End If
正確なエラー番号 ( ) がわかっている場合はIf Err.Number = N Then
、もちろんそのほうがよいでしょう。
カスタム メッセージ ボックスについて話しているのであれば、それは簡単です。詳細については、VBA ヘルプで「msgbox」を参照してください。
Msgbox("Error! No table of figures entries found",16,"Error")
16 は、それを「重大」なメッセージにします。
エラー トラップについて話している場合は、次のようなコードが必要になります。
On Error Resume Next
n = 1 / 0 ' this causes an error
If Err.Number <> 0 Then
n = 1
if Err.Number = 1 Then MsgBox Err.Description
End If
エラーがスローされると、番号と説明が Err オブジェクトに与えられます。