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.

HinwBemerkungeneise

Stellt ein Document-Objekt dar, das mithilfe des WithEvents-Schlüsselworts 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.