Word) (Document.XMLBeforeDelete 事件

會在使用者刪除文件中的 XML 元素時發生。 如果同時從文件中刪除一個以上的元素 (例如在剪下並貼上 XML 時),則所刪除的每一個元素都會引發此事件。

語法

運算式XMLBeforeDelete (DeletedRangeOldXMLNodeInUndoRedo)

表達 代表 Document 物件的變數。

參數

名稱 必要/選用 資料類型 描述
DeletedRange 必要 Range 要刪除的 XML 元素的內容。 只有元素而不相關聯的文字,DeletedRange 參數將不存在,並將,因此,設為 Nothing
OldXMLNode 必要 XMLNode 正在刪除的節點。
InUndoRedo 必要 Boolean True 表示使用 Microsoft Word 中的 [ 復原取消復原] 功能已執行的動作。

註解

代表在類別模組中使用WithEvents關鍵字宣告的Document物件。 如需搭配 Document 物件使用事件的相關資訊,請 參閱搭配 Document 物件使用事件

如果 InUndoRedo 參數為 True,請勿在 XMLAfterInsertXMLBeforeDelete 事件執行時變更檔中的 XML。

如果 InUndoRedo 參數為 False,您可以在檔中插入和刪除 XML,但請小心 XMLAfterInsertXMLBeforeDelete 事件不會嘗試取消彼此,導致無限迴圈。 您可以使用通用以防止無限迴圈 Boolean 變數及檢查的錯誤處理常式,如下列範例所示的開頭。

Dim blnIsXMLDeleteRunning As Boolean 
 
Private Sub Document_XMLBeforeDelete(ByVal DeletedRange As Range, _ 
 ByVal OldXMLNode As XMLNode, ByVal InUndoRedo As Boolean) 
 
 If blnIsXMLDeleteRunning = False Then 
 blnIsXMLDeleteRunning = True 
 'Insert your event code here. 
 Else 
 Exit Sub 
 End If 
End Sub

範例

下列範例會在刪除 XML 元素時執行。 如果該元素包含文字,則會顯示訊息,詢問使用者是否要刪除該元素所包含的文字。 如果使用者按一下 [否] 回應,元素的內容會複製到剪貼簿。

Private Sub Document_XMLBeforeDelete(ByVal DeletedRange As Range, _ 
 ByVal OldXMLNode As XMLNode, ByVal InUndoRedo As Boolean) 
 
 Dim intResponse As Integer 
 
 If InUndoRedo = False Then 
 If Not DeletedRange Is Nothing Then 
 intResponse = MsgBox("Are you sure you want to delete the text " _ 
 & vbCrLf & DeletedRange.Text, vbYesNo) 
 
 If intResponse = vbNo Then 
 
 DeletedRange.Copy 
 
 MsgBox "The text has been copied to the Clipboard." & vbCrLf & _ 
 "Position your cursor where you want to insert it, " & _ 
 vbCrLf & " and click Paste on the Edit menu." 
 
 End If 
 End If 
 End If 
End Sub

支援和意見反應

有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應