Slik kjører du en makro når bestemte celler endres i Excel

Obs!

Office 365 ProPlus får nytt navn og heter nå Microsoft 365-apper for enterprise. Hvis du vil ha mer informasjon om denne endringen, kan du lese dette blogginnlegget.

Sammendrag

I Microsoft Excel kan du opprette en makro som bare fremkalles når en verdi skrives inn i en celle i et bestemt ark eller i et ark som er åpent.

Vær imidlertid oppmerksom på at du ikke bør bruke makroer unødvendig fordi de reduserer ytelsen til Excel.

Mer informasjon

Microsoft gir programmeringseksempler kun for illustrasjon, uten garanti hverken uttrykt eller antydet. Dette inkluderer, men er ikke begrenset til, de underforståtte garantiene for salgbarhet eller egnethet for et bestemt formål. Denne artikkelen forutsetter at du er kjent med programmeringsspråket som blir demonstrert og verktøyene som brukes til å opprette og feilsøke prosedyrer. Microsoft kundestøtte-teknikere kan hjelpe til å forklare funksjonaliteten til en bestemt prosedyre, men de vil ikke endre disse eksemplene for å gi ekstra funksjonalitet eller konstruere prosedyrer for å dekke dine spesifikke behov. I mange tilfeller bør en makro bare kjøre når et visst antall celler har verdier angitt i dem (kalt "nøkkelcellene" i dette dokumentet). For å hindre at en stor makro kjører hver gang en verdi skrives inn i en celle i et ark, må du kontrollere om ActiveCell er en av nøkkelcellene. Hvis du vil oppnå dette, kan du bruke Intersect-metoden på ActiveCell, og området som inneholder nøkkelcellene til å kontrollere at ActiveCell er en av nøkkelcellene. Hvis ActiveCell er i området som inneholder nøkkelcellene, kan du bruke makroen.

Slik oppretter du Visual Basic-makroen:

  1. Høyreklikk Ark1-fanen, og klikk deretter Vis kode.

    Modularket bak Ark1 er åpnet.

  2. Skriv inn følgende kode i modularket:

    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim KeyCells As Range
    
    ' The variable KeyCells contains the cells that will
        ' cause an alert when they are changed.
        Set KeyCells = Range("A1:C10")
    
    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
               Is Nothing Then
    
    ' Display a message when one of the designated cells has been 
            ' changed.
            ' Place your code here.
            MsgBox "Cell " & Target.Address & " has changed."
    
    End If
    End Sub
    
  3. Klikk **Lukk og gå tilbake til Microsoft Excel ** på Fil-menyen.

Når du skriver inn en oppføring i cellene A1:C10 på Ark1, vises en meldingsboks.