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.