Hvordan kjøre en makro i Excel

Selv om det ikke er vanskelig å kjøre en makro i Excel, er det mange måter å kjøre dem på. Noen måter er ment å gjøre bruk av makroer enklere, mens andre måter kan endre måten en bruker samhandler med arbeidsboken din helt. I denne artikkelen vil vi dekke noen åpenbare måter å kjøre makroer på, som makroer og knappekontroller, og noen flere uklare måter som VB Editor og Events.

Først: Kontroller at makroer er aktivert

Excels sikkerhetsfunksjoner deaktiverer makroer som standard. Når du åpner en makroaktivert arbeidsbok, blir brukerne vanligvis spurt om de vil aktivere makroer.

Hvis du ikke kan kjøre makroer, kan du prøve å følge disse instruksjonene:

  • Lagre arbeidsboken
  • Lukk arbeidsboken, og åpne den igjen
  • Når arbeidsboken lastes, ser du en Sikkerhetsadvarsel melding (bildet nedenfor). Klikk Aktiver innhold.

Kjør en makro fra makrolisten

Du kan få tilgang til en liste over makroer fra kategorien Vis. Slik ser du denne listen:

  • Velg Utsikt kategorien
  • Klikk på knappen merket Makroer for å få frem makrolisten

  • Velg makroen du vil kjøre fra listen, og klikk deretter på Løpe knapp

Du kan også vise makrolisten når som helst ved å trykke på ALT+F8.

Kjør en makro ved hjelp av en hurtigtast

Du kan tilordne en hurtigtast til en makro som du bruker ofte, i form av CTRL+eller CTRL+SHIFT+. Å gjøre dette:

  • Få frem makrolisten (Utsikt > Makroer, eller ALT+F8)
  • Velg makroen du vil bruke en snarvei til
  • Klikk Alternativer … å vise Makroalternativer sub-dialog

  • I tekstboksen under Snarvei, skriv inn en bokstav og klikk deretter OK. Hvis du holder SHIFT -tasten mens du skriver bokstaven, viser etiketten ved siden av boksen SKIFT som en del av snarveien

MERK: det anbefales på det sterkeste at du bruker SKIFT når du oppretter en hurtigtast! Excel bruker snarveier CTRL+ for seg selv, f.eks. CTRL+C for å kopiere, eller CTRL+V for å lagre. Hvis du oppretter en makrosnarvei ved hjelp av disse eller andre Excel-snarveier, vil du overskrive Excel-snarveien til du tildeler makrosnarveien på nytt.

Kjør en makro fra VB Editor

Makroer kan også kjøres fra VB Editor. Med VB Editor kan du gå gjennom en makrokode og gjøre eventuelle endringer før du kjører den.

Slik kjører du en makro i VB Editor:

  • Åpne VB Editor (kategorien Utvikler> Visual Basic eller ALT+F11)

  • I Prosjekt dobbeltklikk på modulen som inneholder makroen du vil teste
  • I modulens kodevindu, plasser markøren hvor som helst på makrokoden mellom “Sub” og “End Sub”
  • Klikk på Løpe på verktøylinjen, eller trykk på hurtigtasten F5

Kjør en makro med en knapp eller form

Det er ofte nyttig å ha en kontroll på regnearket som en bruker kan klikke for å kjøre en makro, for eksempel en knappekontroll eller en figur. Dette er mye raskere for sluttbrukere enn å åpne lister over makroer eller grave gjennom makrokode i VB Editor.

Informasjon om hvordan du oppretter en klikkbar knapp eller figur finner du her: Legg til en knapp og tilordne en makro i Excel.

Kjør en makro automatisk ved hjelp av hendelser i VBA

Det er mulig å lage en makro når noe skjer i Excel - for eksempel når en arbeidsbok åpnes eller når en celleverdi endres. Disse kalles arrangementer, og du kan skrive VBA -kode for at de skal kunne ringe makroer eller utføre andre operasjoner.

For å skrive kode for en hendelse må du bruke VB Editor. For eksempel, for å se hendelser for arbeidsboken:

  • Åpne VB Editor (ALT+F11)
  • Dobbeltklikk på Denne arbeidsboken objekt i VB Editor's Prosjektvindu
  • Velg "Arbeidsbok" fra rullegardinmenyen øverst til venstre i kodevinduet
  • Klikk på rullegardinmenyen til høyre for å se en liste over hendelser

Følgende er et lite, men nyttig eksempel på Excel -hendelser som du kan kjøre makroer fra.

Workbook_Open ()

Hendelsen Workbook_Open () utløses når en arbeidsbok åpnes. Hvis du får sikkerhetsadvarselen etter at du har åpnet en arbeidsbok, utløses denne hendelsen etter at du har klikket på "Aktiver innhold".

12345 Private Sub Workbook_Open ()MsgBox "Arbeidsbok åpnet!"Slutt Sub

Workbook_BeforeClose (Avbryt som boolsk)

Workbook_BeforeClose () utløses når brukeren prøver å lukke arbeidsboken. Det skjer før noen kontroller er utført for å se om arbeidsboken må lagres.

De Avbryt parameteren kan settes til True for å stoppe arbeidsboken fra å lukke.

123456789 Private Sub Workbook_BeforeClose (Avbryt som boolsk)Hvis MsgBox ("Er du sikker?", VbYesNo + vbQuestion, "Close") = vbNo DaAvbryt = santSlutt omSlutt Sub

Worksheet_Change (ByVal Target As Range)

Worksheet_Change () utløses når verdien til en celle endres - enten den endres av en makro, av en kopier/lim inn -operasjon eller av en ekstern lenke. Det avfyres imidlertid ikke når en verdi blir beregnet på nytt via en formel.

De Mål parameter representerer cellene hvis verdi har endret seg.

Hvis du endrer verdien til andre celler inne i denne hendelsen, vil hendelsen utløses igjen. Dette kan muligens forårsake en uendelig sløyfe. Hvis du trenger å endre celleverdier uten å utløse denne hendelsen, bør du vurdere å angi Application.EnableEvents til Falsk først, og sett den deretter tilbake til ekte på slutten av hendelsesprosedyren.

123456789 Private Sub Worksheet_Change (ByVal Target As Range)MsgBox "Celler endret:" & Target.AddressApplication.EnableEvents = FalskOmråde ("A2"). Verdi = Område ("A2"). Verdi + Target.Cells.CountApplication.EnableEvents = TrueSlutt Sub

Worksheet_SelectionChange (ByVal Target As Range)

Denne hendelsen utløses hver gang forskjellige celler velges med målretten. Målparameteren representerer de nye cellene som er valgt.

Du kan også utløse denne hendelsen med kode, dvs. "Område (" A1 "). Velg". Som med Worksheet_Change (), bør du være forsiktig med å velge andre celler inne i denne hendelsen, siden du kan forårsake en uendelig sløyfe. Bruk Application.EnableEvents.

123456789 Private Sub Worksheet_SelectionChange (ByVal Target As Range)Hvis Target.Address = "$ A $ 1" DaMsgBox "Markør i utgangsposisjon."Slutt omSlutt Sub

Stopp en kjørende makro

En makro som kjører kan avbrytes ved å trykke ESC eller CTRL+BREAK. Som standard viser en avbrutt makro følgende dialogboks:

Klikk Slutt vil stoppe makroen, mens Fortsette vil gjenoppta den. Klikk Feilsøk vil åpne makroen i VB Editor og fokusere koden som kjøringen ble stoppet på. (Inne i VB Editor kan du stoppe eller gjenoppta makroen ved hjelp av Kjør eller Avslutt -knappene på verktøylinjen.)

Application.EnableCancelKey

Du kan deaktivere muligheten til å stoppe en makro med ESC eller CTRL+BREAK ved å angi Application.EnableCancelKey eiendom. Denne egenskapen har tre mulige verdier:

  • xlAvbryt - dette er standardverdien, som får Excel til å vise dialogboksen ovenfor
  • xlDeaktivert - fjerner muligheten til å stoppe en makro som kjører
  • xlErrorHandler - når det gjøres et avbruddsforsøk, kastes en feil som kan håndteres i kode

Når kodeutførelsen stopper, tilbakestiller Excel alltid verdien til Application.EnableCancelKey tilbake til xlAvbryt.

En god grunn til å bruke denne eiendommen er sikkerhet. For eksempel, hvis du hadde en makro som midlertidig ubeskyttede deler av arbeidsboken din, kan en bruker potensielt stoppe makroen rett etter avbeskyttelsen og få tilgang til innhold du ikke hadde til hensikt å ha. Ved å angi Application.EnableCancelKey, kan du deaktivere deres evne til å gjøre dette helt eller håndtere avbruddet deres med en feilhåndterer som beskytter arbeidsboken på nytt.

1234567891011 Sub UpdateBaseData (ByVal NewData As Range, ByVal Target As Range)Application.EnableCancelKey = xlDisabledTarget.Worksheet.Beskytt "MyPassword"NewData.Copy TargetTarget.Worksheet.Protect "MyPassword"Application.EnableCancelKey = xlInterruptSlutt Sub

Force-Close Excel med Windows Oppgavebehandling

Hvis makroen har "hengt", eller Excel har blitt for opptatt til å erkjenne et avbruddsforsøk, må du kanskje tvinge til å lukke Excel selv med Windows Oppgavebehandling. (MERK: Hvis du gjør dette, kan du miste alt arbeid som ikke er lagret, og du må stole på en automatisk gjenopprettingsversjon av arbeidsboken din.)

  • Åpne Oppgavebehandling direkte med CTRL+SKIFT+ESC
  • Velg "Prosesser"-Fanen
  • Utvid elementet "Microsoft Excel" for å vise alle arbeidsbøkene
  • Velg arbeidsboken du vil lukke, og klikk deretter Avslutt oppgaven nederst til høyre

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave