VBA Zelfstudie
Aan de slag met VBA
Zoeken…
Opmerkingen
Deze sectie geeft een overzicht van wat vba is en waarom een ontwikkelaar het misschien wil gebruiken.
Het moet ook alle grote onderwerpen binnen vba vermelden en een link naar de gerelateerde onderwerpen bevatten. Aangezien de documentatie voor vba nieuw is, moet u mogelijk eerste versies van die gerelateerde onderwerpen maken.
versies
Versie | Office-versies | Uitgavedatum Opmerkingen | Publicatiedatum |
---|---|---|---|
Vba6 | ? - 2007 | [Ergens daarna] [1] | 1992/06/30 |
Vba7 | 2010 - 2016 | [Blog.techkit.com] [2] | 2010-04-15 |
VBA voor Mac | 2004, 2011 - 2016 | 2004-05-11 |
Toegang krijgen tot de Visual Basic Editor in Microsoft Office
U kunt de VB-editor in elk van de Microsoft Office-toepassingen openen door op Alt + F11 te drukken of naar het tabblad Ontwikkelaars te gaan en op de knop "Visual Basic" te klikken. Als het tabblad Ontwikkelaars niet in het lint wordt weergegeven, controleert u of dit is ingeschakeld.
Het tabblad Ontwikkelaars is standaard uitgeschakeld. Om het tabblad Ontwikkelaars in te schakelen, ga naar Bestand -> Opties, selecteer Lint aanpassen in de lijst aan de linkerkant. Zoek in het rechtergedeelte "Het lint aanpassen" het item voor de boomstructuur van ontwikkelaars en schakel het selectievakje voor het selectievakje voor ontwikkelaars in. Klik op OK om het dialoogvenster Opties te sluiten.
Het tabblad Ontwikkelaars is nu zichtbaar in het lint waarop u op "Visual Basic" kunt klikken om de Visual Basic Editor te openen. Als alternatief kunt u op "View Code" klikken om direct het codevenster van het actieve element te bekijken, bijv. WorkSheet, Chart, Shape.
U kunt VBA gebruiken om bijna elke actie te automatiseren die interactief (handmatig) kan worden uitgevoerd en ook functionaliteit bieden die niet beschikbaar is in Microsoft Office. VBA kan een document maken, er tekst aan toevoegen, het opmaken, bewerken en opslaan, allemaal zonder menselijke tussenkomst.
Eerste module en Hallo wereld
Om te beginnen met coderen, moet u met de rechtermuisknop op uw VBA-project in de linkerlijst klikken en een nieuwe module toevoegen. Uw eerste Hello-World- code kan er zo uitzien:
Sub HelloWorld()
MsgBox "Hello, World!"
End Sub
Om het te testen, drukt u op de Play- knop in uw werkbalk of drukt u gewoon op de F5- toets. Gefeliciteerd! U hebt uw eerste eigen VBA-module gebouwd.
Debugging
Foutopsporing is een zeer krachtige manier om nader te bekijken en onjuist werkende (of niet-werkende) code te repareren.
Voer code stap voor stap uit
Het eerste dat u tijdens het debuggen moet doen, is de code op specifieke locaties stoppen en deze vervolgens regel voor regel uitvoeren om te zien of dat gebeurt wat wordt verwacht.
- Breekpunt ( F9 , Foutopsporing - Wisselbreekpunt): u kunt een breekpunt toevoegen aan elke uitgevoerde regel (bijvoorbeeld niet aan declaraties), wanneer de uitvoering dat punt bereikt, stopt het en geeft het de gebruiker controle.
- U kunt het trefwoord
Stop
ook toevoegen aan een lege regel om de code tijdens runtime op die locatie te laten stoppen. Dit is handig als u bijvoorbeeld vóór declaratieregels waaraan u geen breekpunt kunt toevoegen met F9 - Stap in ( F8 , Debug - Stap in): voert slechts één regel code uit, als dat een aanroep is van een door de gebruiker gedefinieerde sub / functie, dan wordt die regel voor regel uitgevoerd.
- Stap over ( Shift + F8 , Debug - Stap over): voert een regel code uit, voert geen door de gebruiker gedefinieerde subs / functies in.
- Stap uit ( Ctrl + Shift + F8 , Debug - Stap uit): Huidige sub / functie afsluiten (code uitvoeren tot het einde).
- Uitvoeren naar cursor ( Ctrl + F8 , Debug - Uitvoeren naar cursor): code uitvoeren totdat de regel met de cursor wordt bereikt.
- U kunt
Debug.Print
om tijdens runtime lijnen naar het directe venster af te drukken. U kunt ookDebug.?
als een snelkoppeling voorDebug.Print
Horloges venster
Het regel voor regel uitvoeren van code is slechts de eerste stap, we moeten meer details weten en een hulpmiddel daarvoor is het watch-venster (View - Watch-venster), hier kunt u waarden van gedefinieerde uitdrukkingen zien. Om een variabele aan het kijkvenster toe te voegen:
- Klik er met de rechtermuisknop op en selecteer "Horloge toevoegen".
- Klik met de rechtermuisknop in het watch-venster en selecteer "Watch toevoegen".
- Ga naar Debug - horloge toevoegen.
Wanneer u een nieuwe uitdrukking toevoegt, kunt u kiezen of u alleen de waarde ervan wilt zien of de uitvoering van de code ook wilt onderbreken wanneer deze waar is of wanneer de waarde verandert.
Direct venster
In het directe venster kunt u willekeurige code uitvoeren of items afdrukken door ze te laten voorafgaan door het trefwoord Print
of een enkel vraagteken " ?
"
Een paar voorbeelden:
-
? ActiveSheet.Name
- geeft de naam van het actieve blad terug -
Print ActiveSheet.Name
- retourneert de naam van het actieve blad -
? foo
- retourneert de waarde vanfoo
* -
x = 10
setsx
tot 10 *
* Waarden voor variabelen verkrijgen / instellen via het directe venster kan alleen tijdens runtime worden gedaan
Best practices debuggen
Wanneer uw code niet werkt zoals verwacht, moet u deze eerst zorgvuldig lezen en zoeken naar fouten.
Als dat niet helpt, begin dan met het opsporen van fouten; voor korte procedures kan het efficiënt zijn om het gewoon regel voor regel uit te voeren, voor langere procedures moet u waarschijnlijk breekpunten of pauzes instellen op bekeken expressies, het doel hier is om de lijn te vinden die niet werkt zoals verwacht.
Als u eenmaal de regel hebt die het onjuiste resultaat geeft, maar de reden is nog niet duidelijk, probeer dan uitdrukkingen te vereenvoudigen of variabelen te vervangen door constanten, die kunnen helpen begrijpen of de waarde van variabelen onjuist zijn.
Als u het nog steeds niet kunt oplossen en om hulp kunt vragen:
- Neem een zo klein mogelijk deel van uw code op om uw probleem te begrijpen
- Als het probleem geen verband houdt met de waarde van variabelen, vervangt u deze door constanten. (dus in plaats van
Sheets(a*b*c+d^2).Range(addressOfRange)
schrijfSheets(4).Range("A2")
) - Beschrijf welke regel het verkeerde gedrag geeft en wat het is (fout, fout resultaat ...)