Document.XMLBeforeDelete-Ereignis (Word)
Tritt ein, wenn ein Benutzer ein XML-Element aus einem Dokument löscht. Wenn mehrere Elemente gleichzeitig aus einem Dokument gelöscht werden (z. B. beim Ausschneiden und Einfügen von XML), wird das Ereignis für jedes gelöschte Element ausgelöst.
Syntax
Ausdruck. XMLBeforeDelete (DeletedRange, OldXMLNode, InUndoRedo)
Ausdruck Eine Variable, die ein Document-Objekt darstellt.
Parameter
Name | Erforderlich/Optional | Datentyp | Beschreibung |
---|---|---|---|
DeletedRange | Erforderlich | Range | Der Inhalt des XML-Elements, das gelöscht wird. Wenn nur ein Element und kein zugehöriger Text gelöscht wird, ist der Parameter DeletedRange nicht vorhanden und wird daher auf Nothing festgelegt. |
OldXMLNode | Erforderlich | XMLNode | Der Knoten, der gelöscht wird. |
InUndoRedo | Erforderlich | Boolean | True gibt an, dass die Aktion mithilfe des Befehls Rückgängig oder Wiederholen in Microsoft Word ausgeführt wurde. |
Hinweise
Stellt ein Document-Objekt dar, das mithilfe der WithEvents-Schlüsselwort (keyword) in einem Klassenmodul deklariert wurde. Informationen zur Verwendung von Ereignissen mit einem Document-Objekt finden Sie unter Verwenden von Ereignissen mit dem Document-Objekt.
Wenn der InUndoRedo-ParameterTrue ist, ändern Sie niemals den XML-Code in einem Dokument, während die Ereignisse XMLAfterInsert und XMLBeforeDelete ausgeführt werden.
Wenn der InUndoRedo-ParameterFalse ist, können Sie den XML-Code im Dokument einfügen und löschen. Achten Sie jedoch darauf, dass die Ereignisse XMLAfterInsert und XMLBeforeDelete nicht versuchen, sich gegenseitig abzubrechen, was zu einer Endlosschleife führt. Sie können Endlosschleifen verhindern, indem Sie eine globale boolesche Variable verwenden und diese am Anfang des Fehlerhandlers überprüfen, wie im folgenden Beispiel gezeigt.
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
Beispiel
Das folgende Beispiel wird ausgeführt, wenn ein XML-Element gelöscht wird. Wenn das Element Text enthält, wird eine Meldung angezeigt, die fragt, ob der Text im Element gelöscht werden soll. Wenn der Benutzer antwortet, indem er auf Nein klickt, wird der Inhalt des Elements in die Zwischenablage kopiert.
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
Support und Feedback
Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.