Share via


Evento Document.XMLBeforeDelete (Word)

Ocorre quando um usuário exclui um elemento XML de um documento. Se mais de um elemento for excluído do documento de uma vez (por exemplo, ao recortar e colar XML), esse evento é acionado para cada elemento excluído.

Sintaxe

expressão. XMLBeforeDelete (DeletedRange, OldXMLNode, InUndoRedo)

Expressão Uma variável que representa um objeto Document .

Parâmetros

Nome Obrigatório/Opcional Tipo de dados Descrição
DeletedRange Obrigatório Range O conteúdo do elemento XML que está sendo excluído. Se apenas um elemento é excluído e não associadas a texto, o parâmetro DeletedRange não existirá e, portanto, ser definirá como Nothing.
OldXMLNode Obrigatório XMLNode O nó que está sendo excluído.
Inundoredo Obrigatório Boolean True indica que a ação foi realizada usando o recurso Desfazer ou Refazer no Microsoft Word.

Comentários

Representa um objeto Document que foi declarado usando a palavra-chave WithEvents em um módulo de classe. Para obter informações sobre como usar eventos com um objeto Document , consulte Usando eventos com o objeto Document.

Se o parâmetro InUndoRedo for True, nunca altere o XML em um documento enquanto os eventos XMLAfterInsert e XMLBeforeDelete estiverem em execução.

Se o parâmetro InUndoRedo for False, você poderá inserir e excluir o XML no documento, mas tenha cuidado para que os eventos XMLAfterInsert e XMLBeforeDelete não tentem cancelar uns aos outros, causando um loop infinito. Você pode impedir que entrará em loop infinito usando um global variável booleano e verifique se o final do manipulador de erros, conforme mostrado no exemplo a seguir.

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

Exemplo

O exemplo a seguir é executado quando um elemento XML é excluído. Se o elemento contiver texto, uma mensagem será exibida perguntando se o usuário deseja excluir o texto contido no elemento. Se o usuário responder clicando em Não, o conteúdo do elemento será copiado para a Área de Transferência.

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

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.