Document.XMLBeforeDelete 事件 (Word)

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

語法

運算式。XMLBeforeDelete (DeletedRange、 OldXMLNode、 InUndoRedo)

運算式 代表 Document 物件的變數。

參數

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

註解

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

如果 InUndoRedo 參數為 True,則永遠不要在 XMLAfterInsert 和 XMLBeforeDelete 事件執行時變更文件中的 XML。

如果 InUndoRedo 參數為 False,您可以在文件中插入及刪除 XML,但請小心 XMLAfterInsert 和 XMLBeforeDelete 事件不會嘗試相互抵消,而造成無限迴圈。 您可以使用通用以防止無限迴圈 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 支援與意見反應。