我正在更改文档模板宏。我无法弄清楚如何做的一件事是自定义错误消息。例如,文档中的错误消息是
“错误!找不到数字条目表”
我想更改此内容以显示其他内容。是否可以使用Word VBA或VBScript执行此操作?
答案 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对象一个数字和描述。