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 支持和反馈,获取有关如何接收支持和提供反馈的指南。