VBA, wat is dit, wat kan ik ermee en hoe leer ik het? – Excelweb.nl
Grote kans dat als je je wel eens gewaagd hebt aan macro’s dat je al snel bent gestopt. Het ziet er erg lastig uit voor iemand die hier net mee in aanraking komt.
Een macro kan in veel gevallen opgenomen worden,een hele handige functie, maar vervolgens wijkt hij bij het uitvoeren nooit meer van dit pad af.
Wanneer je aanpassingen wilt maken in je macro moet je de code induiken, dit is VBA code. Als je je macro een klein beetje anders wilt en helemaal geen ervaring hebt met het schrijven van code, dan ziet de code er toch al een heel stuk ingewikkelder uit.
Deze code noemen we de VBA code, dit staat voor Visual Basic for Applications.
Wat is het verschil tussen een macro en VBA?
Eigenlijk is er niet echt een verschil. Een macro kun je opnemen met de macro recorder vanuit excel. Wanneer je deze opneemt maakt excel voor jou een VBA code aan.
Na het opnemen ga je deze uitvoeren en dan wordt deze aangemaakte code uitgevoerd.
Als er nog niet veel ervaring is, of als je VBA wilt leren, dan is de macro opnemen module ideaal. Hier kan je toch de meeste acties mee laten registreren en je kunt de code altijd terug lezen.
Een meer ervaren programmeur zal deze macro opnemen module niet vaak meer gebruiken. Hierbij worden namelijk heel veel overtollige code regels aangemaakt dat niet altijd de snelheid van het excel blad bevorderd.
Voordelen van VBA
- De taak wordt altijd op precies dezelfde manier uitgevoerd door excel.
- De taak is sneller uitgevoerd als dat je hem handmatig wil verwerken.
- Afhankelijk van hoe de VBA code is aangemaakt, wordt deze zonder fouten uitgevoerd.
- Met VBA code kun je dingen voor elkaar krijgen die met de normale excel methodes onmogelijk zijn.
Nadelen van VBA
- Je moet weten hoe je de code schrijft. Gelukkig valt dit makkelijk aan te leren.
- Het gaat niet altijd geheel vlekkeloos. Bij kleine wijzigingen kan het zijn dat je macro vastloopt en mag je de problemen gaan oplossen.
- Als je van excel versie veranderd werken de macros niet altijd meer.
Waarom VBA?
- Het gebruikt taal om instructies te schrijven
- Het heeft een korte leercurve. Vanaf de eerste dag dat je begint met leren, kun je direct beginnen met het schrijven van eenvoudige programma’s.
- Het verbetert de functionaliteit van Excel door je in staat te stellen Excel zich te laten gedragen zoals jij dat wilt
- Het helpt bij het automatiseren van taken die je vaak moet uitvoeren om enorm veel tijd te besparen
Persoonlijke en zakelijke toepassingen van VBA in excel
Voor persoonlijk gebruik kun je het gebruiken voor eenvoudige macro’s die de meeste van je routinetaken zullen automatiseren. Lees het artikel over macro’s voor meer informatie over hoe je dit kunt bereiken.
Voor zakelijk gebruik kun je complete krachtige programma’s maken die worden ondersteund door Excel en VBA. Het voordeel van deze aanpak is dat je de krachtige functies van Excel kunt gebruiken in je eigen aangepaste programma’s.
VBA basisbeginselen
Voordat we ook maar een regel code kunnen schrijven, moeten we eerst de basis kennen. De volgende basisbeginselen helpen je op weg.
- Variabelen: op de middelbare school hebben we geleerd over algebra. Zoek (x + 2y) waarbij x = 1 en y = 3. In deze uitdrukking zijn x en y variabelen. Aan hen kunnen elk een nummer worden toegewezen, d.w.z. respectievelijk 1 en 3, zoals in dit voorbeeld. Ze kunnen ook worden gewijzigd in respectievelijk 4 en 2. Variabelen in het kort zijn geheugenlocaties. Terwijl je met VBA werkt, moet je ook variabelen declareren, net als in algebra-lessen
- Regels voor het maken van variabelen: Gebruik geen gereserveerde woorden. Gereserveerde woorden zijn die woorden die een speciale betekenis hebben in Vba en als zodanig kun je ze niet gebruiken als variabelenamen. Excel denkt dan namelijk dat je die gereserveerde functie wilt uitvoeren.
- Variabelenamen mogen geen spaties bevatten: je kunt in plaats van spaties een “_” gebruiken, dit is de best practice om twee woorden van elkaar te scheiden in een variabele naam.
- Gebruik beschrijvende namen: het is erg verleidelijk om een variabele naar jezelf te noemen, maar vermijd dit. Gebruik beschrijvende namen, d.w.z. hoeveelheid, prijs, subtotaal enz. Dit maakt je VBA-code gemakkelijk leesbaar zodat je collega’s het straks ook nog kunnen begrijpen (of jijzelf, geloof me na 4 maanden weet je echt niet meer precies wat je gemaakt had).
- Rekenkundige operatoren: De regels van Brackets of Division Multiplication Addition and Subtraction (BODMAS) zijn van toepassing, dus vergeet niet ze toe te passen bij het werken met expressies die meerdere verschillende rekenkundige operatoren gebruiken. Net als in Excel kun je gebruiken:
+ voor toevoeging
– voor aftrekken
* voor vermenigvuldiging
/ voor divisie - Logische operatoren: Het concept van logische operatoren die je ook in andere Excel functies kunt gebruiken zijn ook van toepassing bij het werken met VBA. Waaronder:
Als statements
OF
NIET
EN
WAAR
ONWAAR
VBA inschakelen, hoe start ik VBA?
Standaard kun je in Excel VBA nog niet gebruiken, dit komt omdat het onder de ontwikkelaarsfuncties zit, en die zul je eerst moeten inschakelen.
- Maak een nieuwe werkmap
- Klik op de lintstartknop
- Selecteer opties (in de nieuwste versie van Excel onder “Bestand”)
- Klik op lint aanpassen
- Schakel het selectievakje voor ontwikkelaars in zoals weergegeven in de onderstaande afbeelding
- Klik OK
Je kunt nu het tabblad ONTWIKKELAARS in het lint zien
Een eerste VBA schrijven
Nu zal ik demonstreren hoe je kunt programmeren in VBA. Alle programma’s in VBA moeten beginnen met “Sub” en eindigen met “End sub”.
Hieronder is de name hoe je jouw eerste programma wilt noemen. Terwijl sub staat voor een subroutine die we in het latere deel van de tutorial zullen leren.
Sub name() . . . End Sub
We zullen een standaard VBA-programma maken dat een invoervak toont om de gebruikersnaam te vragen en vervolgens een begroetingsbericht weer te geven.
- Maak een nieuw werkboek
- Sla het op in een Excel-werkbladformaat met Excel * .xlsm
- Klik op het tabblad ONTWIKKELAARS
- Klik op INVOEGEN vervolgkeuzelijst onder bedieningsbalk
- Selecteer een knop zoals weergegeven in de onderstaande afbeelding
Klik vervolgens met de muis ergens op het werkblad, bijvoorbeeld cel A1.
Je krijgt het volgende dialoogvenster te zien
- Wijzig de naam van de macro in btnHalloWereld_Klik
- Klik op de “nieuw” knop
Je krijgt het volgende codevenster:
Voer de volgende instructiecodes in tussen de Sub en End sub:
Dim naam As String
naam = InputBox(“Vul hier je naam”)
MsgBox “Hallo ” + naam
Dit is wat het betekent:
- “Dim naam as String” creëert een variabele met de naam “naam”. De variabele accepteert tekst, cijfers en andere tekens omdat we deze als een tekenreeks hebben gedefinieerd (as string)
- “naam = InputBox (” Vul hier je naam”)” roept de ingebouwde functie InputBox op die een venster weergeeft met het bijschrift “Vul hier je naam” zodat de gebruiker van dit programma straks weet wat hij moet doen. De ingevoerde naam wordt vervolgens opgeslagen in de naamvariabele.
- “MsgBox” Hallo “+ naam” roept de ingebouwde functie MsgBox op die Hallo en de ingevoerde naam tezamen weergeeft.
Je volledige codevenster moet er nu als volgt uitzien:
- Sluit het codevenster, je hoeft dit niet apart op te slaan
- Klik met de rechtermuisknop op knop 1 en selecteer tekst bewerken om het een meer passende naam te geven
- Vul bijvoorbeeld “zeg hallo” of “vul je naam”
Je hebt nu een programma geschreven waarbij een gebruiker op de knop kan drukken, zijn naam in kan typen en vervolgens een welkomstboodschap krijgt.
- Klik op de “vul je naam” button
- Je krijgt het volgende invoervak
- Voer je naam in, bijvoorbeeld Joost
- Je krijgt het volgende berichtvenster
Het bericht wordt genegereerd door de MsgBox functie in VBA.
Gefeliciteerd, je hebt zojuist je eerste VBA-programma in Excel gemaakt!
De Visual Basic editor openen in Excel
Je kunt de visual basic editor gebruiken om zo een macro te schrijven en die aan je knop toe te wijzen. Je kunt echter ook gewoon de VBA editor openen en gelijk beginnen met coderen van een script.
Stap 1) Klik op het tabblad Ontwikkelaars in het hoofdmenu op het pictogram “Visual Basic” om je VBA-editor te openen.
Stap 2) Er wordt een VBA-editor geopend, van waaruit je het Excel-blad kunt selecteren waar je de code wilt uitvoeren. Dubbelklik op het werkblad om de VBA-editor te openen.
Het opent een VBA-editor aan de rechterkant van de map. Het zal eruit zien als een witte ruimte.
Stap 3) Nu kun je zelf beginnen met code schrijven. Zoals altijd begin je met Sub () en eindig je met END Sub
Stap 4) Als je je script hebt geschreven kun je de macro uitvoeren door op de groene play knop “Uitvoeren” te klikken. Deze staat bovenaan het editormenu.
Stap 5) Wanneer je de code uitvoert, verschijnt er een ander venster. Hier moet je het blad selecteren waar je het programma wilt weergeven en op de knop “Uitvoeren” klikken
Stap 6) Wanneer je op de knop Uitvoeren klikt, wordt het programma uitgevoerd. In het geval van de Hallo Wereld die we hadden gemaakt zal het de invoerbox met de vraag je naam in te vullen tonen, want dat was de eerste stap van de VBA die we hadden geschreven.
Is VBA de moeite waard om te leren?
VBA is absoluut het leren waard als je de functionaliteit van Microsoft Office wilt uitbreiden. VBA is vaak de snelste manier om taken en rapporten binnen Office te automatiseren. Je kunt sommige dingen automatiseren met behulp van macro’s, maar VBA geeft je veel meer kracht en flexibiliteit dan macro’s.
Is VBA een programmeertaal?
VBA is een programmeertaal en runtime-omgeving die kan worden gehost door de Excel-toepassing, of een andere Microsoft Office-programma, of een aantal andere toepassingen zoals Photoshop en CorelDRAW. Het kan ook onafhankelijk van een programma worden uitgevoerd; dit wordt “classic” Visual Basic genoemd.
Is VBA moeilijk te leren?
Met de programmeertaal Visual Basic for Applications (VBA) kun je routinetaken in Excel automatiseren en het is niet zo moeilijk om te leren als de meeste mensen denken. Het is een van de eenvoudigste programmeertalen en er zijn voldoende voorbeelden uit de praktijk die je kunnen begeleiden.
Is SQL vergelijkbaar met VBA?
VBA en SQL zijn twee talen en Excel is een applicatie. VBA is Visual Basic-code die op Excel wordt uitgevoerd en SQL is een speciale taal voor databasequery’s die wordt gebruikt om te communiceren met een database. Werkbladen zijn flexibele applicaties, waar databases niet zo flexibel zijn, maar databases kunnen met veel meer gegevens werken.
Wat is de beste manier om VBA te leren?
Een cursus kan je de basisbeginselen leren van wat er allemaal mogelijk is met VBA, maar de beste manier om Excel VBA te leren, is door al het werk in Excel handmatig in VBA-code te repliceren. De beste manier om VBA-code te leren, is door een macro op te nemen, de dingen te doen die je wilt dat je macro doet en vervolgens de opgenomen macro-code te bekijken.
Hoe sla ik VBA code op?
Je hoeft de VBA code niet apart op te slaan, maar je slaat hem op wanneer je je Excel werkboek opslaat. Je moet alleen de mogelijkheid voor Macro’s in je Excel activeren door hem op te slaan als .xslm (m voor macro).
Conclusie
VBA staat voor Visual Basic for Application. Het is een subcomponent van Visual Basic-programmeertaal die je kunt gebruiken om applicaties in Excel te maken. Met VBA kun je nog steeds profiteren van de krachtige functies van Excel en ze gebruiken in VBA.
Hallo, Ik heb problemen met een excel file (xlsm) met macro’s op mijn macbook. Heb je hier ervaring mee? Ik gebruik office 365, maar ik krijg een foutmelding bij het openen van het bestand
Dat je een foutmelding krijgt bij het openen van het bestand kan verschillende oorzaken hebben. Hier zijn enkele algemene stappen die je kunt proberen om het probleem op te lossen.
Als geen van deze stappen het probleem oplost, zou ik graag meer details willen weten over de foutmelding die je ontvangt. Wellicht kan ik je dan een specifiekere oplossing bieden.
1. Controleer de beveiligingsinstellingen:
Excel kan macro’s blokkeren vanwege de beveiligingsinstellingen. Ga naar Excel > Voorkeuren > Beveiliging en privacy. Zorg ervoor dat de optie “Schakel alle macro’s met melding in” is geselecteerd.
2. Controleer macro-instellingen:
Als het bestand macro’s bevat, moeten de macro-instellingen zo zijn geconfigureerd dat macro’s kunnen worden uitgevoerd. Ga naar Excel > Voorkeuren > Beveiliging en privacy > Macro-instellingen en selecteer de optie “Schakel alle macro’s in”.
3. Controleer het bestand op virussen:
Als het Excel-bestand van een niet-vertrouwde bron afkomstig is, kan het een virus bevatten. Gebruik een bijgewerkte antivirussoftware om het bestand te scannen voordat je het opent.
4. Probeer het bestand op een Windows-pc te openen:
Als het mogelijk is, probeer dan het bestand op een Windows-computer te openen waarop Microsoft Office is geïnstalleerd. Soms kunnen bepaalde macro’s specifieke functionaliteiten vereisen die mogelijk niet beschikbaar zijn op de Mac-versie van Excel.
5. Controleer de compatibiliteit van de macro’s:
Als de macro’s in het bestand zijn gemaakt voor een oudere versie van Excel, kan dit problemen veroorzaken bij het openen op Office 365. Controleer of de macro’s compatibel zijn met de versie die je gebruikt.
6. Update Office 365:
Zorg ervoor dat Office 365 up-to-date is. Soms kunnen software-updates bepaalde problemen oplossen.
7. Probeer Excel opnieuw te installeren:
Als de bovenstaande stappen niet werken, overweeg dan om Excel opnieuw te installeren om eventuele softwareproblemen op te lossen.
Ik heb een complex rekenblad gemaakt voor het doorrekenen van de exploitatiekosten (onderhoud/energie/vervangingsinvesteringen) van 10.000 tot 75.000 objecten. Hierdoor wordt Excel erg traag. Is het mogelijk om dat met VBA te versnellen?
Ja, er zijn wel een paar opties.
Hier zijn een paar suggesties om de prestaties van je Excel-bestand te verbeteren.
– Schakel schermupdates uit
Tijdens het uitvoeren van VBA-code kunnen schermupdates in Excel veel tijd in beslag nemen.
Je kunt deze uitschakelen voordat je je VBA-code uitvoert en ze weer inschakelen wanneer de code is voltooid.
Dit kan de verwerkingstijd aanzienlijk verkorten:
Application.ScreenUpdating = False
‘ Voer hier je VBA-code uit
Application.ScreenUpdating = True
– Schakel berekeningen uit
Als je VBA-code veel berekeningen veroorzaakt, kan het uitschakelen van automatische berekeningen helpen om de verwerkingssnelheid te verbeteren.
Application.Calculation = xlCalculationManual
‘ Voer hier je VBA-code uit
Application.Calculation = xlCalculationAutomatic
– Gebruik arrays voor gegevensverwerking
Als je grote hoeveelheden gegevens verwerkt, kan het efficiënter zijn om de gegevens in arrays in te laden, bewerkingen uit te voeren en vervolgens de resultaten terug te schrijven naar het werkblad.
Het werken met arrays kan aanzienlijk sneller zijn dan directe bewerkingen op het werkblad.
– Optimaliseer je VBA-code
Zorg ervoor dat je VBA-code efficiënt is geschreven.
Vermijd dubbele loops indien mogelijk en gebruik de meest efficiënte methoden om gegevens te manipuleren.
– Gebruik cache voor herhaalde berekeningen
Als bepaalde berekeningen herhaaldelijk worden uitgevoerd, overweeg dan om de resultaten van deze berekeningen in een cache op te slaan, zodat ze niet telkens opnieuw hoeven te worden berekend.
Succes!