Document.XMLBeforeDelete 事件 (Word)

會在使用者刪除文件中的 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 支援與意見反應