Página 1 de 1

Check do ultimo evento disparado!

Enviado: 14 Ago 2018 às 12:22
por samuelsantos00
Olá amigos, boa tarde!

Alguém consegue me explicar como posso saber o ultimo eventos disparado em uma planilha?
Gostaria de testar no "Worksheet_Change" se o usuário deletou ou inseriu linha na planilha para em sequência disparar uma ação.

Obrigado!

Re: Check do ultimo evento disparado!

Enviado: 14 Ago 2018 às 14:03
por osvaldomp
pesquisa via Google ~~~> vba registrar alterações feitas na planilha ~~~> retornou 147.000 resultados, alguns deles aí abaixo, veja se aproveita.

http://www.tomasvasquez.com.br/blog/mic ... -planilha/

https://www.aprenderexcel.com.br/2013/v ... a-no-excel

https://www.guiadoexcel.com.br/criando- ... -hora-vba/

Check do ultimo evento disparado!

Enviado: 14 Ago 2018 às 23:00
por samuelsantos00
Olá Osvaldo, na verdade eu gostaria de saber se o ultimo evento executado foi um inserção de linhas ou exclusão de linha para que assim possa executar uma sequência de códigos.
Os links acima informam como registrar a hora e quem faz alterações na planilha de qualquer forma muito obrigado! vou continuar esperando que alguém possa me ajudar

Re: Check do ultimo evento disparado!

Enviado: 15 Ago 2018 às 09:21
por osvaldomp
Olá, Samuel.
Me parece que ainda não existe um evento nativo no Excel que seja disparado ao inserir/excluir linhas/colunas.
Segue abaixo uma ideia para testes. Veja se pode ser um ponto de partida.
Instale o código abaixo no módulo de uma planilha vazia.
Nessa planilha selecione uma célula, ex. H10, pinte a célula para facilitar a sua localização, na caixa na Caixa de nome (localizada logo acima da letra que identifica a coluna A) digite sapo e aperte Enter, dessa forma H10 ficará nomeada. Em I10 insira 10 e em J10 insira a fórmula =I10.
Aí, após inserir/excluir linha(s) acima do sapo, ele irá pular para baixo ou para cima e uma caixa de mensagem informará.
Código: Selecionar todos
Private Sub Worksheet_Calculate()
 Dim i As Long
  i = Range("sapo").Row - Range("sapo").Offset(, 1).Value
  If i < 0 Then MsgBox "linha(s) excluída)s) ~~~>  " & -i
  If i > 0 Then MsgBox "linha(s) inserida)s) ~~~>  " & i
  Application.EnableEvents = False
  Range("sapo").Offset(, 1).Value = Range("sapo").Row
  Application.EnableEvents = True
End Sub
Por outro lado, se você nos informar o que é "executar uma sequência de códigos" talvez alguém possa sugerir alternativas.