Identifisere Siste Cell Endret i et regneark

September 14  by Eliza

John verk hvis det er en måte i VBA til å identifisere den siste cellen som ble endres av en bruker. Han ønsker ikke å vite om cellen ble endret av en makro, men spesielt av en bruker.

Svaret er ja-liksom. Du kan bruke Worksheet_Change arrangementet til å skrive et behandlingsprogram som vil spille inn når en bestemt celle i et regneark blir endret. En makro som gjør dette kan være ganske enkel, for eksempel denne:

Private Sub Worksheet_Change (ByVal Target As Range)
Application.StatusBar = Target.Address
End Sub

Makroen setter bare adressen til den siste endringen i statuslinjen. Du kan endre makro, slik at det opprettholdes adressen i en global variabel (erklært utenfor hendelsesbehandling) på denne måten:

Dim sAddr As String

Private Sub Worksheet_Change (ByVal Target As Range)
sAddr = Target.Address (usann, usann)
End Sub

Du deretter kan bruke en vanlig makro å hente adresse lagret i sAddr variabel og gjøre hva du vil med den.

Som for å sørge for at hendelseshåndterer ikke registrere eventuelle endringer som er gjort av makroer, er den eneste måten å gjøre dette for å slå av hendelseshåndtering før du utfører en makro kommando som vil endre regnearket. For eksempel kan følgende EnableEvents eiendom endring brukes før og etter en kommando som endrer innholdet i celle A1:

Application.EnableEvents = False
Range ("A1") = "Hello"
Application.EnableEvents = True

Med event håndtering slått av, vil Worksheet_Change hendelsesbehandling ikke bli utløst og den "siste endret"-postadresse vil ikke bli oppdatert. Resultatet er at du ender opp med å spore bare de endringer som er gjort av brukere, ikke endringer gjort av makroer.

ExcelTips er din kilde for kostnadseffektiv Microsoft Excel trening. Dette tipset (3819) gjelder for Microsoft Excel 97, 2000, 2002, og 2003. Du kan finne en versjon av dette tipset for Båndet av Excel (Excel 2007 og senere) her: Identifisere Siste Cell Endret i et regneark.