2008-10-21 33 views
0

我在更改文檔模板宏。我無法找到如何做的一件事是自定義錯誤消息。例如在文檔中的錯誤信息是Word宏錯誤消息

「錯誤!人物條目找不到表格」

我想改變這顯示別的東西。 Word VBA或VBScript可以做到這一點嗎?

+0

如何的消息出現嗎?作爲單詞插入文檔中,還是作爲彈出窗口? – 2008-10-21 05:08:39

+0

作爲單詞插入到文檔中。 – Craig 2008-10-21 05:30:41

回答

0

如果要捕集在VBA一個特定的錯誤類型,一個方法是使用在錯誤繼續下一步然後測試就行的錯誤消息之後的動作以捕獲,例如:

On Error Resume Next 
' try action 
If Err.Number <> 0 Then 
    ' handle w/ custom message 
    Err.Clear 
End If 

如果你知道確切的錯誤號碼(If Err.Number = N Then),那當然會更好。

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對象。

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