Een beginnershandleiding over het schrijven van VBA-macro's in Excel (en waarom u dit zou moeten leren)

Een beginnershandleiding over het schrijven van VBA-macro's in Excel (en waarom u dit zou moeten leren)

Excel-macro's kunnen u veel tijd besparen door: het automatiseren van Excel-processen die u vaak gebruikt . Maar macro's zijn eigenlijk vrij beperkt. Het is gemakkelijk om een ​​fout te maken met de opnametool en het opnameproces is onhandig.





Het gebruik van VBA om macro's te maken geeft je veel meer kracht. U kunt Excel precies vertellen wat u moet doen en hoe u het moet doen. Je krijgt ook toegang tot veel meer functies en mogelijkheden. Als u Excel regelmatig gebruikt, is het de moeite waard om te leren hoe u VBA-macro's maakt.





We beginnen met de basis.





Wat is VBA?

VBA is Visual Basic voor toepassingen , een programmeertaal die u in veel Microsoft-apps kunt gebruiken. Visual Basic is een programmeertaal en VBA is de toepassingsspecifieke versie ervan. (Microsoft stopte in 2008 met Visual Basic, maar VBA gaat nog steeds goed).

Gelukkig voor niet-programmeurs is VBA heel eenvoudig, en de interface die je gebruikt om het te bewerken biedt veel hulp. Veel van de commando's die u zult gebruiken, bevatten pop-upsuggesties en automatische aanvullingen, zodat u uw script snel kunt laten werken.



Toch duurt het even om aan VBA te wennen.

De voordelen van VBA-macro's in Excel

Als VBA moeilijker is dan het opnemen van een macro, waarom zou je het dan gebruiken? Het korte antwoord is dat je veel meer kracht uit VBA-macro's haalt.





In plaats van in uw spreadsheet te klikken en die klikken vast te leggen, heeft u toegang tot het volledige scala aan functies en mogelijkheden van Excel. Je moet alleen weten hoe je ze moet gebruiken.

iphone 12 pro max versus iphone 12 "

En als u eenmaal meer vertrouwd bent met VBA, kunt u alle dingen die u in een normale macro zou doen, in veel minder tijd doen. De resultaten zullen ook voorspelbaarder zijn, zoals u Excel vertelt precies wat te doen. Er is helemaal geen onduidelijkheid.





Nadat u uw VBA-macro hebt gemaakt, kunt u deze eenvoudig opslaan en delen, zodat iedereen er gebruik van kan maken. Dit is vooral handig wanneer u met veel mensen werkt die dezelfde dingen in Excel moeten doen.

Laten we eens kijken naar een eenvoudige VBA-macro om te zien hoe het werkt.

Een voorbeeld van een VBA-macro in Excel

Laten we eens kijken naar een eenvoudige macro. Onze spreadsheet bevat namen van medewerkers, het winkelnummer waar de medewerkers werken en hun kwartaalverkopen.

Deze macro voegt de kwartaalverkopen van elke winkel toe en schrijft die totalen naar cellen in de spreadsheet (als je niet zeker weet hoe je toegang krijgt tot het VBA-dialoogvenster, bekijk dan onze VBA-walkthrough hier ):

Sub StoreSales()
Dim Sum1 As Currency
Dim Sum2 As Currency
Dim Sum3 As Currency
Dim Sum4 As Currency
For Each Cell In Range('C2:C51')
Cell.Activate
If IsEmpty(Cell) Then Exit For
If ActiveCell.Offset(0, -1) = 1 Then
Sum1 = Sum1 + Cell.Value
ElseIf ActiveCell.Offset(0, -1) = 2 Then
Sum2 = Sum2 + Cell.Value
ElseIf ActiveCell.Offset(0, -1) = 3 Then
Sum3 = Sum3 + Cell.Value
ElseIf ActiveCell.Offset(0, -1) = 4 Then
Sum4 = Sum4 + Cell.Value
End If
Next Cell

Range('F2').Value = Sum1
Range('F3').Value = Sum2
Range('F4').Value = Sum3
Range('F5').Value = Sum4

End Sub

Dit lijkt misschien lang en ingewikkeld, maar we zullen het opsplitsen zodat je de afzonderlijke elementen kunt zien en iets kunt leren over de basisprincipes van VBA.

De Sub declareren

Aan het begin van de module hebben we 'Sub StoreSales()'. Dit definieert een nieuwe sub genaamd StoreSales.

U kunt ook functies definiëren --- het verschil is dat functies waarden kunnen retourneren en subs niet (als u bekend bent met andere programmeertalen, zijn subs het equivalent van methoden). In dit geval hoeven we geen waarde te retourneren, dus gebruiken we een sub.

Aan het einde van de module hebben we 'End Sub', die Excel vertelt dat we klaar zijn met deze VBA-macro.

Variabelen declareren

De eerste regels code in ons script beginnen allemaal met 'Dim'. Dim is het commando van VBA voor het declareren van een variabele.

Dus 'Dim Sum1' creëert een nieuwe variabele genaamd 'Sum1.' We moeten Excel echter vertellen wat voor soort variabele dit is. We moeten een gegevenstype kiezen. Er zijn veel verschillende gegevenstypen in VBA --- je kunt de volledige lijst in de helpdocumenten van Microsoft .

Omdat onze VBA-macro te maken heeft met valuta's, gebruiken we het gegevenstype Valuta.

De instructie 'Dim Sum1 As Currency' vertelt Excel om een ​​nieuwe valutavariabele te maken met de naam Sum1. Elke variabele die u declareert, moet een 'As'-instructie hebben om Excel zijn type te vertellen.

Een For-lus starten

Loops zijn enkele van de krachtigste dingen die je in elke programmeertaal kunt maken. Als je niet bekend bent met loops, bekijk dan deze uitleg van Do-While loops. In dit voorbeeld gebruiken we een For-lus, die ook in het artikel wordt behandeld.

Zo ziet de lus eruit:

For Each Cell in Range('C2:C51')
[a bunch of stuff]
Next Cell

Dit vertelt Excel om de cellen in het door ons opgegeven bereik te doorlopen. We hebben een gebruikt Bereik object , wat een specifiek type object is in VBA. Als we het op deze manier gebruiken ---Bereik('C2:C51')--- vertelt het Excel dat we geïnteresseerd zijn in die 50 cellen.

'Voor elk' vertelt Excel dat we iets gaan doen met elke cel in het bereik. 'Volgende cel' komt na alles wat we willen doen en vertelt Excel om de lus vanaf het begin te starten (beginnend met de volgende cel).

We hebben ook deze verklaring: 'If IsEmpty(Cell) Then Exit For.'

Kun je raden wat het doet?

Opmerking: Strikt gesproken, het gebruik van een While-lus was misschien een betere keuze geweest . Omwille van het lesgeven besloot ik echter een For-lus te gebruiken met een Exit.

waarom is mijn schijfgebruik op 100%

Als-Dan-Anders-verklaringen

De kern van deze specifieke macro ligt in de If-Then-Else-instructies. Dit is onze reeks voorwaardelijke uitspraken:

If ActiveCell.Offset(0, -1) = 1 Then
Sum1 = Sum1 + Cell.Value
ElseIf ActiveCell.Offset(0, -1) = 2 Then
Sum2 = Sum2 + Cell.Value
ElseIf ActiveCell.Offset(0, -1) = 3 Then
Sum3 = Sum3 + Cell.Value
ElseIf ActiveCell.Offset(0, -1) = 4 Then
Sum4 = Sum4 + Cell.Value
End If

Voor het grootste deel kun je waarschijnlijk raden wat deze uitspraken doen. U bent misschien niet bekend met ActiveCell.Offset. 'ActiveCell.Offset(0, -1)' vertelt Excel om naar de cel te kijken die zich één kolom links van de actieve cel bevindt.

In ons geval betekent dat dat Excel de kolom winkelnummer moet raadplegen. Als Excel een 1 in deze kolom vindt, neemt het de inhoud van de actieve cel en voegt het toe aan Som1. Als het een 2 vindt, voegt het de inhoud van de actieve cel toe aan Sum2. Enzovoort.

Excel doorloopt al deze verklaringen op volgorde. Als de voorwaardelijke verklaring is voldaan, voltooit het de Dan-instructie. Zo niet, dan gaat het naar de volgende ElseIf. Als het helemaal tot het einde komt en aan geen van de voorwaarden is voldaan, zal het geen actie ondernemen.

De combinatie van de lus en de conditionals is wat deze macro aandrijft. De lus vertelt Excel om door elke cel in de selectie te gaan, en de conditionals vertellen het wat het met die cel moet doen.

Celwaarden schrijven

Ten slotte mogen we de resultaten van onze berekeningen naar cellen schrijven. Dit zijn de regels die we daarvoor gebruiken:

Range('F2').Value = Sum1
Range('F3').Value = Sum2
Range('F4').Value = Sum3
Range('F5').Value = Sum4

Met '.Value' en een isgelijkteken stellen we elk van die cellen in op de waarde van een van onze variabelen.

En dat is het! We vertellen Excel dat we klaar zijn met het schrijven van deze Sub met 'End Sub' en de VBA-macro is voltooid.

Wanneer we de macro uitvoeren met de Macro's knop in de Ontwikkelaar tabblad, krijgen we onze sommen:

De bouwstenen van VBA samenstellen in Excel

Wanneer je voor het eerst naar de VBA-macro hierboven kijkt, ziet deze er behoorlijk complex uit. Maar na het opsplitsen in zijn samenstellende delen, wordt de logica duidelijk. Zoals elke scripttaal kost het tijd om te wennen aan de syntaxis van VBA.

Maar door te oefenen, bouw je je VBA-vocabulaire op en kun je macro's sneller, nauwkeuriger en met veel meer kracht schrijven dan je ooit zou kunnen opnemen.

Als u vastloopt, is het uitvoeren van een Google-zoekopdracht een snelle manier om uw VBA-vragen beantwoord te krijgen. En Microsoft's Excel VBA-referentie kan handig zijn als je bereid bent om er doorheen te graven voor een technisch antwoord.

Als je eenmaal vertrouwd bent met de basis, kun je VBA gaan gebruiken voor zaken als: e-mails verzenden vanuit Excel , het exporteren van Outlook - taken en het weergeven van uw pc - informatie .

hoe video windows media player te draaien
Deel Deel Tweeten E-mail Dit is waarom de FBI een waarschuwing heeft afgegeven voor Hive Ransomware

De FBI waarschuwde voor een bijzonder vervelende vorm van ransomware. Dit is waarom je extra op je hoede moet zijn voor Hive-ransomware.

Lees volgende
Gerelateerde onderwerpen
  • productiviteit
  • Spreadsheet
  • Microsoft Excel
  • Microsoft Office 2016
  • Macro's
  • Codeerhandleidingen
Over de auteur Dan Albright(506 artikelen gepubliceerd)

Dann is een contentstrategie- en marketingconsultant die bedrijven helpt bij het genereren van vraag en leads. Hij blogt ook over strategie en contentmarketing op dannalbright.com.

Meer van Dann Albright

Abonneer op onze nieuwsbrief

Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!

Klik hier om je te abonneren