Événement Document.XMLBeforeDelete (Word)

Se produit lorsqu'un utilisateur supprime un élément XML d'un document. Si plusieurs éléments sont supprimés du document en même temps, par exemple lorsque l'utilisateur coupe et colle du code XML, l'événement est déclenché pour chaque élément supprimé.

Syntaxe

expression. XMLBeforeDelete (DeletedRange, OldXMLNode, InUndoRedo)

Expression Variable qui représente un objet Document .

Parameters

Nom Requis/Facultatif Type de données Description
DeletedRange Obligatoire Range Le contenu de l'élément XML en cours de suppression. Si seul un élément est supprimé et texte non associé, le paramètre DeletedRange n'existera pas et sera, par conséquent, défini sur Nothing.
OldXMLNode Obligatoire XMLNode Nœud supprimé.
InUndoRedo Obligatoire Booléen True indique que l'action a été effectuée à l'aide de la fonctionnalité Annuler ou Rétablir dans Microsoft Word.

Remarques

Représente un objet Document qui a été déclaré à l’aide du mot clé WithEvents dans un module de classe. Pour plus d’informations sur l’utilisation d’événements avec un objet Document , consultez Utilisation d’événements avec l’objet Document.

Si le paramètre InUndoRedo a la valeur True, ne modifiez jamais le code XML dans un document pendant que les événements XMLAfterInsert et XMLBeforeDelete sont en cours d’exécution.

Si le paramètre InUndoRedo a la valeur False, vous pouvez insérer et supprimer le code XML dans le document, mais veillez à ce que les événements XMLAfterInsert et XMLBeforeDelete ne tentent pas de s’annuler mutuellement, ce qui entraîne une boucle infinie. Vous pouvez empêcher les boucles infinies en utilisant une globale variable de type Boolean et effectuer cette vérification au début du Gestionnaire d'erreurs, comme illustré dans l'exemple suivant.

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

Exemple

L'exemple suivant s'exécute lorsqu'un élément XML est supprimé. Si l'élément contient du texte, un message s'affiche et demande à l'utilisateur s'il souhaite supprimer le texte contenu dans l'élément. Si l’utilisateur répond en cliquant sur Non, le contenu de l’élément est copié dans le Presse-papiers.

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

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.