Looking for vba Answers? Try Ask4KnowledgeBase
Looking for vba Keywords? Try Ask4Keywords

VBAKomma igång med VBA


Anmärkningar

Det här avsnittet ger en översikt över vad vba är och varför en utvecklare kanske vill använda den.

Det bör också nämna alla stora ämnen inom vba och koppla till relaterade ämnen. Eftersom dokumentationen för vba är ny kan du behöva skapa initialversioner av relaterade ämnen.

versioner

Version Office-versioner Utgivningsdatumanteckningar Utgivningsdatum
Vba6 ? - 2007 [Någon gång efter] [1] 1992/06/30
Vba7 2010 - 2016 [Blog.techkit.com] [2] 2010-04-15
VBA för Mac 2004, 2011 - 2016 2004-05-11

Åtkomst till Visual Basic Editor i Microsoft Office

Du kan öppna VB-redigeraren i något av Microsoft Office-applikationerna genom att trycka på Alt + F11 eller gå till utvecklarfliken och klicka på "Visual Basic" -knappen. Om du inte ser fliken Utvecklare i bandet, kontrollera om detta är aktiverat.

Som standard är fliken Utvecklare inaktiverad. För att aktivera fliken Utvecklare går du till Arkiv -> Alternativ, välj Anpassa band i listan till vänster. Till höger "Anpassa bandet" trevisningen, hitta utvecklarens trädobjekt och ställ in kryssrutan för utvecklarens kryssruta till markerad. Klicka på Ok för att stänga dialogrutan Alternativ.

Menyn för filalternativ

Fliken Utvecklare är nu synlig i bandet där du kan klicka på "Visual Basic" för att öppna Visual Basic Editor. Alternativt kan du klicka på "Visa kod" för att direkt se kodrutan för det nuvarande aktiva elementet, t.ex. WorkSheet, Chart, Shape.

Flik för utvecklare

VBE

Du kan använda VBA för att automatisera nästan alla åtgärder som kan utföras interaktivt (manuellt) och också tillhandahålla funktionalitet som inte är tillgänglig i Microsoft Office. VBA kan skapa ett dokument, lägga till text i det, formatera det, redigera det och spara det, allt utan mänsklig inblandning.

felsökning

Felsökning är ett mycket kraftfullt sätt att titta närmare på och fixa felaktig (eller ej fungerande) kod.

Kör kod steg för steg

Det första du behöver göra under felsökning är att stoppa koden på specifika platser och sedan köra den rad för rad för att se om det händer vad som förväntas.

  • Breakpoint ( F9 , Debug - Toggle breakpoint): Du kan lägga till en breakpoint till vilken exekverad rad som helst (t.ex. inte till deklarationer), när exekveringen når den punkten stannar den och ger kontroll till användaren.
  • Du kan också lägga till nyckelordet Stop i en tom rad för att stoppa koden på den platsen under körning. Detta är användbart om till exempel före deklarationsrader som du inte kan lägga till en brytpunkt med F9
  • Steg in ( F8 , Felsökning - Steg in): kör endast en kodrad, om det är ett samtal från en användardefinierad sub / funktion, så körs den rad för rad.
  • Steg över ( Shift + F8 , Debug - Step over): kör en rad kod, skriver inte in användardefinierade sub / funktioner.
  • Steg ut ( Ctrl + Shift + F8 , Debug - Step out): Avsluta aktuell sub / funktion (kör kod tills dess slut).
  • Kör till markören ( Ctrl + F8 , Debug - Kör till markören): kör kod tills du når raden med markören.
  • Du kan använda Debug.Print att skriva ut linjer till det omedelbara fönstret under körning. Du kan också använda Debug.? som en genväg för Debug.Print

Klockor fönster

Att köra kod rad för rad är bara det första steget, vi behöver veta mer detaljer och ett verktyg för det är klockfönstret (Visa - Klockfönster), här kan du se värden på definierade uttryck. För att lägga till en variabel i klockfönstret, antingen:

  • Högerklicka på den och välj sedan "Lägg till klocka".
  • Högerklicka i klockfönstret och välj "Lägg till klocka".
  • Gå till Debug - Lägg till klocka.

När du lägger till ett nytt uttryck kan du välja om du bara vill se det värde, eller också köra exekvering av kod när det är sant eller när dess värde förändras.

Omedelbart fönster

Det omedelbara fönstret låter dig köra godtycklig kod eller skriva ut objekt genom att föregå dem antingen med sökordet Print eller med ett enda frågetecken " ? "

Några exempel:

  • ? ActiveSheet.Name - returnerar namnet på det aktiva arket
  • Print ActiveSheet.Name - returnerar namnet på det aktiva arket
  • ? foo - returnerar värdet på foo *
  • x = 10 sätter x till 10 *

* Att få / ställa in värden för variabler via det omedelbara fönstret kan endast göras under körning

Felsökning av bästa praxis

När din kod inte fungerar som förväntat, bör du först läsa den igen noggrant och leta efter misstag.

Om det inte hjälper, börja felsöka det; för korta procedurer kan det vara effektivt att bara köra den rad för rad, för längre måste du antagligen ställa in brytpunkter eller brytningar på betraktade uttryck. Målet här är att hitta raden som inte fungerar som förväntat.

När du har en rad som ger fel resultat, men orsaken är ännu inte klar, försök att förenkla uttryck, eller ersätta variabler med konstanter, som kan hjälpa dig att förstå om variabelns värde är fel.

Om du fortfarande inte kan lösa det och be om hjälp:

  • Inkludera en så liten del av din kod som möjligt för att förstå ditt problem
  • Om problemet inte är relaterat till värdet på variabler, byt ut dem med konstanter. (så istället för Sheets(a*b*c+d^2).Range(addressOfRange) skriv Sheets(4).Range("A2") )
  • Beskriv vilken linje som ger fel beteende och vad det är (fel, fel resultat ...)

Första modulen och Hello World

För att starta kodningen i första hand måste du högerklicka på ditt VBA-projekt i vänsterlistan och lägga till en ny modul. Din första Hello-World- kod kan se ut så här:

Sub HelloWorld()
    MsgBox "Hello, World!"
End Sub
 

För att testa det, tryck på Play- knappen i din verktygsfält eller helt enkelt tryck på F5- tangenten. Grattis! Du har byggt din första egna VBA-modul.