Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Происходит, когда пользователь удаляет XML-элемент из документа. Если из документа одновременно удаляется несколько элементов (например, при вырезании и вставке XML), событие срабатывает для каждого удаленного элемента.
Синтаксис
expression. XMLBeforeDelete (DeletedRange, OldXMLNode, InUndoRedo)
выражение Переменная, представляющая объект Document .
Параметры
| Имя | Обязательный или необязательный | Тип данных | Описание |
|---|---|---|---|
| DeletedRange | Обязательный | Диапазон | Содержимое удаляемого 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 и обратная связь.