0

ドキュメント テンプレート マクロを変更しています。やり方がわからないのは、エラー メッセージをカスタマイズすることです。たとえば、ドキュメント内のエラー メッセージは次のとおりです。

「エラー! 図表エントリが見つかりません」

これを変更して別のものを表示したいと思います。Word VBA または VBScript でこれを行うことは可能ですか?

4

3 に答える 3

1

これをある種のグローバルエラーハンドラーに入れることは可能ですか?–クレイグ

可能です。これは非常に大まかな例です。

標準モジュールの場合:

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
于 2008-10-21T09:05:05.960 に答える
0

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、もちろんそのほうがよいでしょう。

于 2008-10-21T02:29:13.013 に答える
0

カスタム メッセージ ボックスについて話しているのであれば、それは簡単です。詳細については、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 オブジェクトに与えられます。

于 2008-10-21T02:32:00.543 に答える