Visual Basic for Application ( VBA ) er et programmeringsspråk som lar deg utvide funksjonaliteten til Excel og automatisere repeterende oppgaver. Med VBA kan du lage makroer, skjemaer, tilpassede funksjoner og interaktive applikasjoner. I denne artikkelen vil du lære det grunnleggende om VBA i Excel og hvordan du bruker det til å utføre enkle eller komplekse operasjoner.
Hvordan få tilgang til VBA i Excel?
For å få tilgang til VBA i Excel, må du aktivere kategorien Utvikler på båndet. For å gjøre dette, følg disse trinnene:
- Klikk på Fil-knappen og deretter på Alternativer.
- I vinduet for Excel-alternativer klikker du på Tilpass bånd.
- I listen over hovedfaner merker du av for Utvikler og klikker OK.
Du vil da se Utvikler-fanen vises på båndet. Denne kategorien inneholder flere VBA-relaterte verktøy, for eksempel Visual Basic-knappen, Record Macro-knappen eller Insert Control-knappen.
Visual Basic-knappen åpner Visual Basic Editor (VBE), hvor du oppretter og redigerer VBA-kode. Ta opp makro-knappen genererer automatisk VBA-kode som gjengir handlingene du utfører i applikasjonen. Sett inn kontroll-knappen lar deg legge til interaktive elementer i regnearket ditt, for eksempel knapper, avmerkingsbokser eller rullegardinlister.
Hvordan skrive VBA-kode i Excel?
For å skrive VBA-kode i Excel, må du bruke Visual Basic Editor (VBE). For å åpne den, klikk på Visual Basic-knappen på Utvikler-fanen på båndet.
VBE består av flere vinduer:
- Prosjektvinduet viser den hierarkiske strukturen til objekter som inneholder VBA-kode. For eksempel, hvis du har en arbeidsbok som heter MyWorkbook.xlsm med to ark kalt Sheet1 og Sheet2, vil du se objektene Sheet1 og Sheet2 samt et objekt kalt ThisWorkbook vises under MyWorkbook.xlsm.
- Egenskaper-vinduet viser egenskapene til objektet som er valgt i prosjektvinduet. Hvis du for eksempel velger Sheet1-objektet, vil du se egenskapene som navnet (Navn), fargen (Tab.Color), koden (CodeName) osv.
- Kode-vinduet viser VBA-koden knyttet til objektet som er valgt i prosjektvinduet. Hvis du for eksempel velger Sheet1-objektet, vil du se VBA-koden som kjører når du samhandler med Sheet1-regnearket.
- Umiddelbart-vinduet viser VBA-koderesultater eller feilmeldinger. Hvis du for eksempel bruker MsgBox-funksjonen til å vise en melding til brukeren, vil du se meldingen vises i vinduet Umiddelbart.
For å skrive VBA-kode må du følge visse syntaksregler:
- Hver setning må slutte med en ny linje eller et kolon (:).
- Nøkkelord for VBA-språk må skrives med store eller små bokstaver, men ikke navnene på objekter, egenskaper eller metoder, som skiller mellom store og små bokstaver.
- Kommentarer må innledes med apostrof (') eller Rem-tegnet og må skrives på en egen linje eller etter en uttalelse.
- Tegnstrenger må være omgitt av doble anførselstegn (“).
- De aritmetiske operatorene er +, -, *, / og ^ (potens).
- De logiske operatorene er And, Or, Not, Xor og Eqv.
- Sammenligningsoperatorene er =, <>, <, <=, > og >=.
- De forhåndsdefinerte konstantene er True, False, Null, Empty, Nothing og vbNullString.
Her er et eksempel på VBA-kode som viser en melding til brukeren:
Sub Hello() ' Dette er en MsgBox-kommentar "Hei, jeg er Bing!" ' Viser en End Sub-melding
Hvordan bruke Excel-regnearkfunksjoner i VBA?
Du kan bruke de fleste Excel-regnearkfunksjoner i VBA-setningene dine. For å gjøre dette må du bruke følgende syntaks:
Application.WorksheetFunction.FunctionName(argument1, argument2, ...)
For eksempel, hvis du vil bruke SUM-funksjonen til å beregne summen av verdiene i området A1:A10, kan du skrive:
Sub Sum() Dim result As Double ' Erklærer en variabel av typen Double result = Application.WorksheetFunction.Sum(Range("A1:A10")) ' Tildeler resultatet av SUM-funksjonen til variabelen MsgBox-resultat ' Viser resultatet End Under
Du kan også bruke egendefinerte funksjoner som du lager selv i VBA. For å gjøre dette må du bruke følgende syntaks:
Funksjon Funksjonsnavn(argument1 Som Type1, argument2 Som Type2, ...) Som ReturnType ' Deklarasjoner og instruksjoner Funksjonsnavn = uttrykk ' Tilordner funksjonen resultatet som skal returneres Sluttfunksjon
Hvis du for eksempel vil lage en funksjon som beregner kvadratet til et tall, kan du skrive:
Funksjon Kvadrat(tall As Double) As Double ' Erklærer en funksjon som tar et tall som et argument og returnerer et tall Kvadrat = tall * tall ' Tildeler kvadratet av tallet til funksjonen End Function
Du kan deretter bruke denne funksjonen i VBA-setningene eller i Excel-formlene. For eksempel :
Sub Test() Dim x As Double ' Erklærer en variabel av typen Double x = 5 ' Tildeler verdien 5 til variabelen MsgBox Square(x) ' Viser kvadratet av x End Sub
Hvordan lage makroer i Excel?
En makro er et sett med VBA-instruksjoner som utføres på en gang. Du kan lage makroer for å automatisere tilbakevendende eller komplekse oppgaver i Excel. Det er to måter å lage makroer på: ved å ta dem opp eller ved å skrive dem.
Ta opp en makro
Å ta opp en makro innebærer å bruke knappen Ta opp makro på Utvikler-fanen på båndet for å fange opp handlinger du utfører i Excel og konvertere dem til VBA-kode. Dette er den enkleste og raskeste måten å lage en makro på, men den kan produsere dårlig optimalisert eller overflødig kode.
Følg disse trinnene for å ta opp en makro:
- Klikk på Spill inn makro-knappen på Utvikler-fanen på båndet.
- Gi makroen et navn i dialogboksen Spill inn makro, velg en hurtigtast hvis du vil, velg en plassering for å lagre makroen (aktiv arbeidsbok, ny arbeidsbok eller personlig arbeidsbok), og skriv en beskrivelse hvis du vil .
- Klikk OK for å starte opptaket.
- Utfør handlingene du vil automatisere i Excel. Hvis du for eksempel vil lage en makro som formaterer en tabell, velger du tabellen, stiler den, sorterer den alfabetisk osv.
- Klikk på Stopp opptak-knappen på Utvikler-fanen på båndet for å fullføre opptaket.
Du kan deretter kjøre makroen ved å bruke den valgte tastatursnarveien, ved å klikke på Makroer-knappen i Utvikler-fanen på båndet, eller ved å bruke Kjør-knappen i VBE.
Skriv en makro
Å skrive en makro innebærer å bruke VBE til direkte å skrive inn VBA-koden som tilsvarer handlingene du vil automatisere. Dette er den mest fleksible og kraftige metoden for å lage en makro, men den krever programmeringskunnskap.
Følg disse trinnene for å skrive en makro:
- Åpne VBE ved å klikke på Visual Basic-knappen på Utvikler-fanen på båndet.
- I prosjektvinduet velger du objektet der du vil lagre makroen (aktiv arbeidsbok, ny arbeidsbok eller personlig arbeidsbok).
- I Kode-vinduet skriver du inn VBA-koden som tilsvarer handlingene du vil automatisere. Hvis du for eksempel vil lage en makro som formaterer en tabell, skriver du inn følgende kode:
Sub FormatTable() ' Velger tabellen Range("A1:D10").Select ' Bruker en stil på tabellen Selection.Style = "Tabell 1" ' Sorterer tabellen alfabetisk etter kolonne A ActiveWorkbook.Worksheets("Sheet1" ). Sort.SortFields.Clear ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("A2:A10") _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlWorksheetbook With Active. ("Sheet1").Sort .SetRange Range("A1:D10") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub
Du kan deretter kjøre makroen din ved å bruke Kjør-knappen i VBE eller ved å tilordne den en hurtigtast eller kontroll.
Vanlige spørsmål
Her er noen vanlige spørsmål om bruk av VBA i Excel:
Hva er VBA og hvorfor bruke det?
VBA er versjonen av Visual Basic som leveres med Microsoft Office. Det er et objektorientert programmeringsspråk som bruker syntaks nær naturlig språk. VBA lar deg få tilgang til og manipulere Excels objekter, egenskaper og metoder ved hjelp av kode. Du kan derfor styre Excel på en finere og kraftigere måte enn gjennom det grafiske grensesnittet.
Å bruke VBA har flere fordeler:
- Du kan automatisere repeterende eller kjedelige oppgaver, som å rense data, formatere tabeller, lage diagrammer og mer.
- Du kan tilpasse Excel til dine spesifikke behov, legge til funksjoner som ikke finnes i programvaren eller endre oppførselen.
- Du kan samhandle med brukeren ved hjelp av dialoger, skjemaer eller egendefinerte meldinger.
- Du kan integrere Excel med andre Office-applikasjoner eller eksterne datakilder, som Outlook, Word, Access, SQL Server, etc.
Hvordan feilsøke VBA-kode i Excel?
For å feilsøke VBA-kode i Excel, kan du bruke VBE-verktøy, for eksempel bruddpunkter, stepping, Watch-vindu eller Locales-vindu. Disse verktøyene lar deg kontrollere kjøring av kode, sjekke variabelverdier og oppdage feil.
Hvordan beskytte VBA-kode i Excel?
For å beskytte VBA-kode i Excel kan du låse VBA-prosjektet med et passord. For å gjøre dette, følg disse trinnene:
- Åpne VBE ved å klikke på Visual Basic-knappen på Utvikler-fanen på båndet.
- I prosjektvinduet høyreklikker du VBA-prosjektnavnet og velger VBA-prosjektegenskaper.
- Klikk kategorien Beskyttelse i dialogboksen VBA-prosjektegenskaper.
- Merk av for Lås prosjektet for visning, skriv inn et passord og bekreft det.
- Klikk OK for å lukke dialogboksen.
- Lagre og lukk arbeidsboken.
Hvordan kjøre en makro når du åpner eller lukker en arbeidsbok?
For å kjøre en makro når du åpner eller lukker en arbeidsbok, må du bruke hendelsene Workbook_Open eller Workbook_BeforeClose. For å gjøre dette, følg disse trinnene:
- Åpne VBE ved å klikke på Visual Basic-knappen på Utvikler-fanen på båndet.
- I prosjektvinduet velger du ThisWorkbook-objektet under arbeidsboknavnet.
- I kodevinduet velger du Arbeidsbok fra rullegardinlisten Objekt øverst til venstre.
- Velg Åpne eller Før Lukk fra rullegardinlisten Prosedyre øverst til høyre.
- Skriv inn VBA-koden som kaller opp makroen du vil kjøre. For eksempel :
Private Sub Workbook_Open() ' Kjører Hello-makroen når du åpner arbeidsboken Hello End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) ' Kjører AuRevoir-makroen når arbeidsboken lukkes AuRevoir End Sub
Hvordan lage et skjema i Excel med VBA?
For å lage et skjema i Excel med VBA må du bruke VBEs skjemadesigner. For å gjøre dette, følg disse trinnene:
- Åpne VBE ved å klikke på Visual Basic-knappen på Utvikler-fanen på båndet.
- I prosjektvinduet høyreklikker du VBA-prosjektnavnet og velger Sett inn og deretter UserForm.
- Et nytt UserForm-vindu åpnes. Du kan legge til kontroller som etiketter, tekstbokser, knapper osv. til den. ved å dra dem fra verktøykassen.
- Du kan endre egenskapene til kontrollene i Egenskaper-vinduet eller skrive VBA-kode for å håndtere hendelsene deres i Kode-vinduet.
- For å vise skjemaet kan du bruke Vis-metoden. For eksempel :
Sub ShowForm() ' Viser skjemaet UserForm1 UserForm1.Show End Sub
Hvordan lage en tilpasset funksjon i Excel med VBA?
For å lage en egendefinert funksjon i Excel med VBA, må du bruke følgende syntaks:
Funksjon Funksjonsnavn(argument1 Som Type1, argument2 Som Type2, ...) Som ReturnType ' Deklarasjoner og instruksjoner Funksjonsnavn = uttrykk ' Tilordner funksjonen resultatet som skal returneres Sluttfunksjon
Hvis du for eksempel vil lage en funksjon som beregner kvadratet til et tall, kan du skrive:
Funksjon Kvadrat(tall As Double) As Double ' Erklærer en funksjon som tar et tall som et argument og returnerer et tall Kvadrat = tall * tall ' Tildeler kvadratet av tallet til funksjonen End Function
Du kan deretter bruke denne funksjonen i VBA-setningene eller i Excel-formlene. For eksempel :
Sub Test() Dim x As Double ' Erklærer en variabel av typen Double x = 5 ' Tildeler verdien 5 til variabelen MsgBox Square(x) ' Viser kvadratet av x End Sub
Du kan også bruke egendefinerte funksjoner som du lager selv i VBA. For å gjøre dette må du bruke følgende syntaks:
Funksjon Funksjonsnavn(argument1 Som Type1, argument2 Som Type2, ...) Som ReturnType ' Deklarasjoner og instruksjoner Funksjonsnavn = uttrykk ' Tilordner funksjonen resultatet som skal returneres Sluttfunksjon
Hvis du for eksempel vil lage en funksjon som beregner kvadratet til et tall, kan du skrive:
Funksjon Kvadrat(tall As Double) As Double ' Erklærer en funksjon som tar et tall som et argument og returnerer et tall Kvadrat = tall * tall ' Tildeler kvadratet av tallet til funksjonen End Function
Du kan deretter bruke denne funksjonen i VBA-setningene eller i Excel-formlene. For eksempel :
Sub Test() Dim x As Double ' Erklærer en variabel av typen Double x = 5 ' Tildeler verdien 5 til variabelen MsgBox Square(x) ' Viser kvadratet av x End Sub
Eller
=Kvadrat(A1) ' Beregner kvadratet av verdien av celle A1
Konklusjon
Du lærte i denne artikkelen hvordan du bruker Visual Basic for Application (VBA) i Excel. Du har sett hva VBA er og hvorfor du bruker det, hvordan du får tilgang til VBA i Excel, hvordan du skriver VBA-kode i Excel, hvordan du bruker Excel-regnearkfunksjoner i VBA, hvordan du lager makroer i Excel med VBA, hvordan du lager skjemaer i Excel med VBA og hvordan lage tilpassede funksjoner i Excel med VBA. Blant de egendefinerte funksjonene du kan lage med VBA er å gjøre en subtraksjon i Excel . Du kan nå utnytte programmeringskraften til VBA for å tilpasse og automatisere Excel etter behov.