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