Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Возникают, когда пользователь удаляет элемент XML из документа. Если из документа одновременно удаляется несколько элементов (например, при вырезании и вставке XML), событие возникает для каждого удаляемого элемента.
Синтаксис
выражение. XMLBeforeDelete (DeletedRange, OldXMLNode, InUndoRedo)
выражение Переменная, представляющая объект документа .
Параметры
| Имя | Обязательный или необязательный | Тип данных | Описание |
|---|---|---|---|
| DeletedRange | Обязательный | Range | Содержимое удаляемого элемента XML. Если удаляется только элемент, а не связанный с ним текст, параметр DeletedRange не будет существовать и, следовательно, будет иметь значение Nothing. |
| OldXMLNode | Обязательный | XMLNode | Удаляемый узел. |
| InUndoRedo | Обязательный | Boolean | Значение "true" означает, что действие было выполнено с помощью функций "Отменить" или "Повторить" в Microsoft Word. |
Примечания
Представляет объект Document, объявленный с помощью ключевого слова WithEvents в модуле класса. Сведения об использовании событий с объектом Document см. в статье Использование событий с объектом Document.
Если параметр InUndoRedo имеет значение True, никогда не изменяйте XML в документе во время выполнения событий XMLAfterInsert и XMLBeforeDelete .
Если параметр InUndoRedo имеет значение False, вы можете вставлять и удалять XML в документе, но будьте осторожны, чтобы события XMLAfterInsert и XMLBeforeDelete не пытались отключить друг друга, вызывая бесконечный цикл. Вы можете предотвратить бесконечные циклы, используя глобальную логическую переменную и проверку для нее в начале обработчика ошибок, как показано в следующем примере.
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 и обратная связь.