Den bästa VBA-guiden (för nybörjare) du någonsin kommer att behöva

VBA -programmeringsplattformen(VBA programming) som körs i nästan alla Microsoft Office- produkter är ett av de mest kraftfulla verktyg någon kan använda för att förbättra sin användning av dessa produkter.

Denna VBA -guide för nybörjare kommer att visa dig hur du lägger till utvecklarmenyn(Developer) i din Office - applikation, hur du öppnar VBA- redigeringsfönstret och hur grundläggande VBA- satser och loopar fungerar så att du kan komma igång med VBA i Excel , Word , Powerpoint , Outlook och OneNote .

Denna VBA- guide använder den senaste versionen av Microsoft Office- produkter. Om du har en tidigare version kan du se några små skillnader från skärmdumparna.

Hur man aktiverar och använder VBA Editor(How To Enable & Use The VBA Editor)

I någon av Office- produkterna som används i den här guiden kanske du märker att du inte har den refererade utvecklarmenyn(Developer) . Utvecklarmenyn är endast tillgänglig i Excel , Word , Outlook och Powerpoint . OneNote erbjuder inte ett verktyg för att redigera VBA -kod inifrån programmet, men du kan fortfarande referera till OneNote API för att interagera med OneNote från andra Office- program. 

Du kommer att lära dig hur du gör detta i vår kommande Advanced VBA- guide.

  • För att aktivera utvecklarmenyn(Developer) i en kontorsprodukt, välj Arkiv(File) -menyn och välj Alternativ(Options) från den vänstra navigeringsmenyn. 
  • Du kommer att se en popup-meny med alternativ . (Options)Välj Anpassa menyfliksområdet(Customize Ribbon) från den vänstra navigeringsmenyn.

Den vänstra listan innehåller alla tillgängliga menyer och menykommandon som är tillgängliga i det Office- programmet. Listan till höger är de som för närvarande är tillgängliga eller aktiverade.

  • Du bör se Utvecklare(Developer) i listan till höger, men den kommer inte att aktiveras. Markera bara(Just) kryssrutan för att aktivera Utvecklarmenyn(Developer) .

  • Om du inte ser Utvecklare(Developer) tillgänglig till höger ändrar du den vänstra Välj kommandon(Choose commands) från rullgardinsmenyn till Alla kommandon(All Commands) . Hitta utvecklare(Developer) från listan och välj Add>> i mitten för att lägga till den menyn i menyfliksområdet(Ribbon) .
  • Välj OK när du är klar.
  • När Utvecklarmenyn(Developer) är aktiv kan du gå tillbaka till ditt huvudprogramfönster och välja Utvecklare(Developer) från toppmenyn. 
  • Välj sedan Visa kod(View Code) från gruppen Kontroller(Controls) i menyfliksområdet för att öppna VBA- redigeringsfönstret.

  • Detta öppnar VBA- redigeringsfönstret där du kan skriva in koden du kommer att lära dig i de kommande avsnitten.

  • Prova att lägga till utvecklarmenyn(Developer) i några av de Office- program du använder varje dag. När du är bekväm med att öppna VBA- redigeringsfönstret, fortsätt till nästa avsnitt i den här guiden.

Allmänna VBA-programmeringstips för nybörjare(General VBA Programming Tips for Beginners)

Du kommer att märka när VBA- redigeraren öppnas, att navigeringsalternativen i den vänstra panelen ser olika ut från ett Office - program till ett annat.

Detta beror på att de tillgängliga objekten där du kan placera VBA -kod beror på vilka objekt som finns i applikationen. Till exempel, i Excel kan du lägga till VBA -kod till arbetsboks- eller arkobjekt. I Word kan du lägga till VBA -kod i dokument. I Powerpoint , endast till moduler.

Så bli inte förvånad över de olika menyerna. Strukturen och syntaxen för VBA -koden är densamma för alla applikationer. Den enda skillnaden är de objekt du kan referera till och de åtgärder du kan vidta på dessa objekt genom VBA -koden.

Innan vi dyker in i de olika objekten och åtgärderna du kan vidta på dem via VBA -kod, låt oss först titta på den vanligaste VBA- strukturen och syntaxen du kan använda när du skriver VBA -kod.

Var man lägger VBA-koden(Where To Put VBA Code)

När du är i VBA- redigeraren måste du använda de två rullgardinsrutorna överst i redigeringsfönstret för att välja vilket objekt du vill bifoga koden till och när du vill att koden ska köras.

Om du till exempel i Excel väljer Kalkylblad(Worksheet) och Aktivera(Activate) körs koden när kalkylbladet öppnas. 

Andra kalkylbladsåtgärder som du kan använda för att trigga din VBA -kod inkluderar när kalkylbladet ändras, när det är stängt (avaktiverat), när kalkylbladet körs och mer.

När du lägger till VBA -kod i editorn, se alltid till att placera din VBA -kod på objektet och använda rätt åtgärd som du vill använda för att trigga den koden.

VBA IF uttalanden(VBA IF Statements)

En IF-sats fungerar i VBA precis som den fungerar i alla andra programmeringsspråk.

Den första delen av IF-satsen tittar på om ett villkor eller en uppsättning villkor är sanna. Dessa villkor kan sammanfogas av en OCH-(AND) eller ELLER-operator för att länka dem samman.

Ett exempel skulle vara att kontrollera om ett betyg i ett kalkylblad är över eller under betyget "godkänd", och att tilldela statusen godkänd eller underkänd till en annan cell.

If Cells(2, 2) > 75 Then Cells(2, 3) = “Pass” Else Cells(2, 3) = “Fail”

Om du inte vill ha hela påståendet på en enda rad kan du dela upp det i flera rader genom att lägga till en "_"-symbol i slutet av raderna.

If Cells(2, 2) > 75 Then _
Cells(2, 3) = “Pass”  Else _
Cells(2, 3) = “Fail”

Att använda denna teknik kan ofta göra koden mycket lättare att läsa och felsöka.

VBA för nästa slingor(VBA For Next Loops)

IF-satser är bra för enskilda jämförelser, som exemplet ovan med att titta på en enskild cell. Men vad händer om du vill gå igenom en hel rad av celler och göra samma IF-sats på var och en?

I det här fallet skulle du behöva en FOR- loop. 

För att göra detta måste du använda längden på ett intervall och gå igenom den längden med antalet rader som innehåller data.

För att göra detta måste du definiera intervallet och cellvariablerna och gå igenom dem. Du måste också definiera en räknare så att du kan mata ut resultaten till lämplig rad. Så din VBA -kod skulle först ha den här raden.

Dim rng As Range, cell As Range
Dim rowCounter som heltal(Dim rowCounter as Integer)

Definiera intervallstorleken enligt följande. 

Set rng = Range(“B2:B7”)
rowCounter = 2

Slutligen kan du skapa din FOR -loop för att gå igenom varje cell i det intervallet och göra jämförelsen.

For Each cell In rng
   If cell.Value > 75 Then _
   Cells(rowCounter, 3) = "Pass" Else _
   Cells(rowCounter, 3) = "Fail"

   rowCounter = rowCounter + 1

Next cell

När detta VBA-skript(VBA script) har körts ser du resultaten i själva kalkylarket.

VBA While Loops

A While Loop går(Loop) också igenom en serie satser, precis som FOR- slingan, men villkoret för att loopingen ska fortsätta är ett villkor som förblir sant.

Till exempel kan du skriva samma FOR- loop ovan, som en WHILE- loop, genom att helt enkelt använda variabeln rowCounter enligt följande.

While rowCounter < rng.Count + 2
   If Cells(rowCounter, 2) > 75 Then _
   Cells(rowCounter, 3) = "Pass" Else _
   Cells(rowCounter, 3) = "Fail"
   rowCounter = rowCounter + 1
Wend

Obs: rng.Count + 2 avslutande gräns krävs eftersom radräknaren börjar vid 2 och måste sluta på rad 7 där data slutar. Räknaren för intervallet (B2:B7) är dock bara 6, och While-slingan kommer bara att sluta när räknaren är STÖRRE(GREATER) än räknaren – så det sista radens Räknarvärde måste vara 8 (eller rng.Count + 2).

Du kan också ställa in While-slingan enligt följande:

While rowCounter <= rng.Count + 1

Du kan bara öka antalet intervall (6) med 1, eftersom när variabeln rowCounter når slutet av data (rad 7) kan slingan avslutas.

VBA gör medan och gör till loopar(VBA Do While and Do Until Loops)

Do While och Do Until loopar är nästan identiska med While loopar, men fungerar något annorlunda.

  • While Loop(While Loop) kontrollerar om ett villkor är sant i början av loopen.
  • Do -While-loopen(Do-While Loop) kontrollerar om ett villkor är sant efter exekvering av satserna i loopen.
  • Gör -till-slingan(Do-Until Loop) kontrollerar om ett villkor fortfarande är falskt efter att slingan har körts.

I det här fallet skulle du skriva om While-slingan ovan enligt följande, som en Do-While-loop.

Do
   If Cells(rowCounter, 2) > 75 Then _
   Cells(rowCounter, 3) = "Pass" Else _
   Cells(rowCounter, 3) = "Fail"
   
   rowCounter = rowCounter + 1
Loop While rowCounter < rng.Count + 2

I det här fallet ändras inte logiken särskilt mycket, men om du vill vara säker på att den logiska jämförelsen äger rum efter att alla satser har körts (så att alla kan köras oavsett vad minst en gång), då görs en Do-While eller Gör-till-slinga är det rätta alternativet.

VBA Välj ärendeutlåtanden(VBA Select Case Statements)

Den sista typen av logisk sats du måste förstå för att börja strukturera din VBA -kod är Select Case - satser.

Med tanke på exemplet ovan, låt oss säga att du vill ha en betygsmetod som inte bara är godkänd. Istället vill du tilldela ett bokstavsbetyg från A till F.

Du kan göra detta med följande Select Case- uttalande:

For Each cell In rng
   
   Select Case cell

   Case 95 To 100
      Cells(rowCounter, 3) = "A"
   Case 85 To 94
      Cells(rowCounter, 3) = "B"
   Case 75 To 84
      Cells(rowCounter, 3) = "C"
   Case 65 To 74
      Cells(rowCounter, 3) = "D"
   Case 0 To 64
      Cells(rowCounter, 3) = "F"
   End Select

   rowCounter = rowCounter + 1

Next cell

Det resulterande kalkylarket efter att detta VBA- skript körts ser ut som det nedan.

Nu vet du allt du behöver veta för att börja använda VBA i dina Microsoft Office- program.



About the author

"Jag är en frilansande Windows- och Office-expert. Jag har över 10 års erfarenhet av att arbeta med dessa verktyg och kan hjälpa dig att få ut det mesta av dem. Mina färdigheter inkluderar: arbeta med Microsoft Word, Excel, PowerPoint och Outlook; skapa webben sidor och applikationer; och hjälpa kunder att nå sina affärsmål."



Related posts