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.