Word) (Document.XMLBeforeDelete 事件
會在使用者刪除文件中的 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 支援與意見反應。