Word宏错误消息

时间:2008-10-21 02:18:37

标签: vbscript ms-word word-vba

我正在更改文档模板宏。我无法弄清楚如何做的一件事是自定义错误消息。例如,文档中的错误消息是

“错误!找不到数字条目表”

我想更改此内容以显示其他内容。是否可以使用Word VBA或VBScript执行此操作?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

如果要在VBA中捕获特定的错误类型,一种方法是使用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),那当然会更好。

答案 2 :(得分: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对象一个数字和描述。