Makro når Excel-celle endres - Excel-tips

Innholdsfortegnelse

Flere lesere har stilt spørsmål som krever at Excel kjører en del av makroen hver gang en verdi endres i Excel-regnearket.

For det første har den forbedrede metoden kun tilgjengelig i XL97: Excel 97 har noen nye hendelsesbehandlere som lar en makro kjøres hver gang en celle endres.

La oss si at når som helst en verdi større enn 100 er angitt i kolonne A, vil du formatere cellen ved siden av den til å være rød.

  • Åpne Visual Basic Edit (Verktøy> Makro> Visual Basic Editor)
  • Høyreklikk Ark 1 i venstre vindu og velg Vis kode.
  • Øverst i dialogboksen Book1 - Sheet1 Code er det to rullegardiner. Velg Arbeidsark fra venstre rullegardin. Velg Endre fra høyre rullegardin.
  • Skriv inn følgende kodelinjer:

    Private Sub Worksheet_Change(ByVal Target As Excel.Range) If Target.Column = 1 Then ThisRow = Target.Row If Target.Value> 100 Then Range("B" & ThisRow).Interior.ColorIndex = 3 Else Range("B" & ThisRow).Interior.ColorIndex = xlColorIndexNone End If End If End Sub

Hver gang en verdi i en celle endres, kjøres denne makroen. Variabelen Target vil fortelle deg hvilken celle og den nye verdien til cellen. Overraskende nok reduserer ikke prosessen betydelig ved å bruke denne metoden.

Merk at makroen forblir aktiv så lenge regnearket er åpent eller til du kjører en makro med følgende linje i:

Application.EnableEvents = False

/ p> I Excel 95 / 7.0: Du må bruke OnEntry-metoden. Du angir en makro som du vil kjøre etter at en verdi er angitt. I dette tilfellet inneholder variabelen Application.Caller adressen og verdien som endret seg. Skriv inn følgende i en ny modul:

Sub AutoOpen() Worksheets("Sheet1").OnEntry = "CheckIt" End Sub Sub CheckIt() If Application.Caller.Column = 1 Then ThisRow = Application.Caller.Row If Application.Caller.Value> 100 Then Range("B" & ThisRow).Interior.ColorIndex = 3 Else Range("B" & ThisRow).Interior.ColorIndex = xlColorIndexNone End If End If End Sub

OnEntry-kontroll vil forbli aktiv til du kjører en makro med følgende kode:

Worksheets("Sheet1").OnEntry = False

Interessante artikler...