Document.XMLBeforeDelete 事件 (Word)

用户从文档中删除 XML 元素时发生。 如果同时从文档中删除了多个元素(例如,剪切和粘贴 XML 时),则删除的每个元素都会激发该事件。

语法

表达式XMLBeforeDelete (DeletedRangeOldXMLNodeInUndoRedo)

表达式 表示 Document 对象的变量。

参数

名称 必需/可选 数据类型 说明
DeletedRange 必需 Range 被删除的 XML 元素的内容。 如果只有某个元素将被删除并不相关联的文本,DeletedRange 参数将不会存在,并将因此,设置为 Nothing
OldXMLNode 必需 XMLNode 正在被删除的节点。
InUndoRedo 必需 Boolean 为 true ,则表示使用 Microsoft Word 中的 撤消重做功能时执行的操作。

备注

表示通过在类模块中使用 WithEvents 关键字 (keyword) 声明的 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 支持和反馈,获取有关如何接收支持和提供反馈的指南。