4 Fouten die u kunt vermijden bij het programmeren van Excel-macro's met VBA

Eenvoudige code en macro's zijn de sleutels tot Microsoft Excel-superkrachten. Zelfs niet-programmeurs kunnen gemakkelijk indrukwekkende functionaliteit toevoegen aan hun spreadsheets met Virtual Basics for Applications (VBA). Vermijd gewoon deze programmeerfouten voor beginners!

Eenvoudige code en macro's zijn de sleutels tot Microsoft Excel-superkrachten.  Zelfs niet-programmeurs kunnen gemakkelijk indrukwekkende functionaliteit toevoegen aan hun spreadsheets met Virtual Basics for Applications (VBA).  Vermijd gewoon deze programmeerfouten voor beginners!
Advertentie

Microsoft Excel is al een zeer capabele data-analysetool, maar met de mogelijkheid om repetitieve taken met macro's te automatiseren. Hoe e-mails vanuit een Excel-spreadsheet te verzenden VBA-scripts gebruiken E-mails verzenden vanuit een Excel-spreadsheet VBA-scripts gebruiken We laten u zien hoe u kunt stel geautomatiseerde e-mails in vanuit Excel met Collaboration Data Objects, (CDO) en VBA-scripts. Onze codesjablonen maken dit een stuk eenvoudiger dan het klinkt! Lees Meer door het schrijven van eenvoudige code in (VBA), het is zoveel krachtiger. Echter, onjuist gebruikt, kan VBA veel problemen veroorzaken.

Zelfs als u geen programmeur bent, biedt VBA eenvoudige functies waarmee u een aantal zeer indrukwekkende functies aan uw spreadsheets kunt toevoegen, dus verlaat deze nog niet!

Of je nu een VBA-goeroe bent, die dashboards maakt in Excel Bouw je eigen weer-dashboard in deze Google-spreadsheet-hoofdklasse Bouw je eigen weer-dashboard in deze masterclass van Google Spreadsheet Wil je van je Google Drive-account een intelligent weeranalysesysteem maken?, en een Star Trek-fantasie uitleven? OK! Read More, of een newbie, die alleen weet hoe eenvoudige scripts moeten worden geschreven die elementaire celberekeningen uitvoeren, je kunt eenvoudige programmeertechnieken volgen, die je helpen de kansen te verbeteren om schone en foutloze code te schrijven.

Aan de slag met VBA

Als je nog niet eerder in VBA in Excel hebt geprogrammeerd, is het eigenlijk vrij eenvoudig om de hulpprogramma's voor ontwikkelaars in te schakelen. Ga gewoon naar Bestand > Opties en dan Lint aanpassen . Verplaats de ontwikkelaarsopdrachtengroep vanuit het linkerdeelvenster naar rechts.

excel-vba1

Zorg ervoor dat het selectievakje is ingeschakeld en dat nu het tabblad Ontwikkelaar in uw Excel-menu wordt weergegeven.

excel-vba2

De eenvoudigste manier om in dit venster van de code-editor te komen, is door gewoon op de knop Code bekijken te klikken onder Besturing in het ontwikkelaarsmenu.

1. Verschrikkelijke variabele namen

Nu je in het codevenster bent, is het tijd om VBA-code te gaan schrijven. Hoe je je eigen eenvoudige app kunt maken met VBA Hoe je je eigen eenvoudige app kunt maken met VBA Voor degenen onder u die echt graag willen kunnen schrijven je eigen toepassing, maar je hebt nog nooit eerder een enkele regel code getypt, ik ga je begeleiden door je hele ... Lees meer. De eerste belangrijke stap in de meeste programma's, of het nu VBA is of een andere taal, is het definiëren van uw variabelen.

Tijdens mijn decennia van coderen, kwam ik veel denkrichtingen tegen als het gaat om variabele naamgevingsconventies en heb ik op de moeilijke manier een paar dingen geleerd. Dit zijn de snelle tips voor het maken van variabelenamen:

  • Maak ze zo kort mogelijk.
  • Maak ze zo beschrijvend mogelijk.
  • Voorafloop ze met variabel type (boolean, integer, etc ...).
  • Vergeet niet om de juiste scope te gebruiken (zie hieronder).

Hier is een voorbeeld van een screenshot van een programma dat ik vaak gebruik om WMIC Windows-oproepen vanuit Excel te maken om pc-informatie te verzamelen. Hoe zie ik al uw pc-informatie met een eenvoudig Excel VBA-script Hoe u al uw pc-informatie kunt bekijken met een eenvoudige Excel VBA Script Excel en 10 minuten werk geeft u meer gedetailleerde informatie over uw computer dan u ooit voor mogelijk had gehouden. Klinkt te mooi om waar te zijn? Dat is Windows, als u weet hoe u het moet gebruiken. Lees verder .

excel-vba3

Wanneer u de variabelen in een willekeurige functie binnen de module of het object wilt gebruiken (ik zal dit hieronder uitleggen), moet u dit als een "openbare" variabele declareren door de verklaring vooraf met Public te gebruiken . Anders worden variabelen gedeclareerd door ze vooraf te laten gaan met het woord Dim .

Zoals je kunt zien, is de variabele voorafgegaan door int . Als de variabele een geheel getal is. Als het een string is, dan str . Dit helpt later tijdens het programmeren, omdat je altijd weet welk type gegevens de variabele bevat, door alleen maar naar de naam te kijken. U zult ook opmerken dat als er zoiets als een string is die een computernaam bevat, de variabele strComputerName wordt genoemd.

Vermijd het maken van zeer ingewikkelde of verwarrende variabelenamen die alleen jij begrijpt. Maak het makkelijker voor een andere programmeur om achter je te komen en begrijp wat het allemaal betekent!

Een andere fout die mensen maken, is het achterlaten van bladnamen als standaard "Blad1", "Blad2", enz. Dit voegt nog meer verwarring toe aan een programma. Geef de bladen liever een naam zodat ze logisch zijn.

excel-vba4

Op deze manier, wanneer u naar de bladnaam in uw Excel VBA-code verwijst VBA gebruiken om sessies van Internet Explorer te automatiseren vanuit een Excel-spreadsheet VBA gebruiken om sessies van Internet Explorer te automatiseren vanuit een Excel-spreadsheet Met de integratie met Windows kan Internet Explorer worden beheerd in een aantal verrassende manieren met behulp van Visual Basic for Applications (VBA) script vanuit elke toepassing die dit ondersteunt, zoals Word, Outlook of Excel. Meer lezen, je doelt op een naam die logisch is. In het bovenstaande voorbeeld heb ik een blad waarop ik netwerkinformatie ophaal, dus ik noem het blad "Netwerk". Nu in de code, wanneer ik wil verwijzen naar het Netwerkblad, kan ik het snel doen zonder op te zoeken welk werkblad het is.

2. Breken in plaats van herhalen

Een van de meest voorkomende problemen die nieuwere programmeurs hebben 6 levens gewoonten die programmeren kan je vandaag leren 6 Levensgewoonten die programmeren je vandaag kunnen leren Alles wat belangrijk is dat je moet weten over een succesvol leven, kun je krijgen via een computerprogramma. Geloof me niet? Lees verder. Meer lezen als ze beginnen met het schrijven van code heeft op de juiste manier te maken met loops. En omdat zoveel mensen die Excel VBA gebruiken erg veel code-newbies zijn, is slecht lussen epidemisch.

Looping is heel gebruikelijk in Excel, omdat je vaak gegevenswaarden verwerkt in een hele rij of kolom, dus je moet lus maken om ze allemaal te verwerken. Nieuwe programmeurs willen vaak onmiddellijk uit een lus (ofwel een For-lus of een While-look) breken wanneer een bepaalde voorwaarde waar is.

excel-vba5

U kunt de complexiteit van de bovenstaande code negeren, houd er rekening mee dat er binnen de innerlijke IF-instructie een optie is om de For-lus te verlaten als de voorwaarde waar is. Hier is een eenvoudiger voorbeeld:

For x = 1 To 20 If x = 6 Then Exit For y = x + intRoomTemp Next i 

Nieuwe programmeurs nemen deze aanpak omdat het eenvoudig is. Wanneer een toestand optreedt waarop je wacht om een ​​lus te verlaten, is de verleiding om er gewoon meteen uit te springen sterk, maar doe het niet.

Vaker wel dan niet, de code die na die "pauze" komt is belangrijk om te verwerken, zelfs de laatste keer door de lus voor het afsluiten. Een veel schonere en professionelere manier om om te gaan met omstandigheden waarin je halverwege een lus wilt laten, is gewoon om die exit-voorwaarde op te nemen in zoiets als een While-statement.

 While (x>=1 AND x<=20 AND x6) For x = 1 To 20 y = x + intRoomTemp Next i Wend 

Dit zorgt voor een logische stroom van uw code, met de laatste doorloop wanneer x 5 is, en vervolgens gracieus op wanneer de For-lus telt tot 6. Geen noodzaak om lastige EXIT- of BREAK-opdrachten in de middenlus in te lassen.

3. Geen arrays gebruiken

Een andere interessante fout die nieuwe VBA-programmeurs De grondbeginselen van computerprogrammering 101 - Variabelen en datatypes De grondbeginselen van computerprogrammeren 101 - Variabelen en gegevenstypes Nadat ik iets over objectgeoriënteerd programmeren geïntroduceerd en besproken heb en waar de naam vandaan komt, vond ik het tijd dat we door de absolute basis van programmeren gaan op een niet-taalspecifieke manier. Deze ... Lees meer make probeert alles binnen meerdere geneste lussen te verwerken die door rijen en kolommen filteren tijdens het berekeningsproces.

Hoewel dit kan werken, kan dit ook tot grote prestatieproblemen leiden, als u constant dezelfde berekeningen op dezelfde nummers in dezelfde kolom moet uitvoeren. Het doorlopen van die kolom en het elke keer extraheren van de waarden is niet alleen saai om te programmeren, het is een moordenaar op je processor. Een efficiëntere manier om lange lijsten met getallen te verwerken, is om een ​​array te gebruiken.

Als je nog nooit een array hebt gebruikt, wees dan niet bang. Stel je een array voor als een ijsblokjesplateau met een bepaald aantal "kubussen" waar je informatie in kunt stoppen. De kubussen zijn genummerd van 1 tot 12, en dat is hoe je gegevens erin "zet".

icecube trays

U kunt eenvoudig een array definiëren door Dim-arrMyArray (12) integer te typen.

Dit creëert een "tray" met 12 slots die je kunt vullen.

Dit is wat een rij-luscode zonder een array er als volgt uitziet:

 Sub Test1() Dim x As Integer intNumRows = Range("A2", Range("A2").End(xldown)).Rows.Count Range("A2").Select For x = 1 To intNumRows If Range("A" & str(x)).value< 100 then intTemp = (Range("A" & str(x)).value) * 32 - 100 End If ActiveCell.Offset(1, 0).Select Next End Sub 

In dit voorbeeld wordt de code verwerkt door elke cel in het bereik en voert de temperatuurberekening uit.

Later in het programma, als u ooit een andere berekening op dezelfde waarden wilt uitvoeren, moet u deze code dupliceren, alle cellen verwerken en uw nieuwe berekening uitvoeren.

Als u in plaats daarvan een array gebruikt, kunt u de 12 waarden in de rij opslaan in uw handige opslagarray. Later, wanneer u berekeningen wilt uitvoeren met die getallen, staan ​​ze al in het geheugen en zijn ze klaar voor gebruik.

 Sub Test1() Dim x As Integer intNumRows = Range("A2", Range("A2").End(xldown)).Rows.Count Range("A2").Select For x = 1 To intNumRows arrMyArray(x-1) = Range("A" & str(x)).value) ActiveCell.Offset(1, 0).Select Next End Sub 

De "x-1" voor het wijzen naar het array-element is alleen nodig omdat de For-lus begint bij 1. Array-elementen moeten beginnen bij 0.

Maar als u eenmaal uw array hebt geladen met de waarden uit de rij, kunt u later in het programma alle gewenste berekeningen samenvoegen met behulp van de array.

 Sub TempCalc() For x = 0 To UBound(arrMyArray) arrMyTemps(y) = arrMyArray(x) * 32 - 100 Next End Sub 

Dit voorbeeld doorloopt de volledige rij array (UBound geeft u het aantal gegevenswaarden in de array), voert de temperatuurberekening uit en plaatst deze in een andere array met de naam arrMyTemps.

U kunt zien hoeveel eenvoudiger de tweede berekeningscode is. En vanaf dit punt is uw array al geladen wanneer u meer berekeningen met dezelfde reeks getallen wilt uitvoeren en klaar om te beginnen.

4. Te veel verwijzingen gebruiken

Of u nu programmeert in een volwaardige Visual Basic of VBA, u moet "referenties" opnemen om toegang te krijgen tot bepaalde functies, zoals toegang tot een Access-database of het schrijven van uitvoer naar een tekstbestand.

Verwijzingen zijn een soort van "bibliotheken" gevuld met functionaliteit die u kunt gebruiken als u dat bestand inschakelt. U vindt Referenties in de weergave Ontwikkelaars door in het menu op Extra te klikken en vervolgens op Verwijzingen te klikken.

excel-vba6

Wat u in dit venster vindt, zijn alle momenteel geselecteerde referenties voor uw huidige VBA-project.

excel-vba7

Naar mijn ervaring kunnen de selecties hier veranderen van de ene Excel-installatie naar de andere en van de ene pc naar de andere. Veel hangt af van wat andere mensen met Excel op deze pc hebben gedaan, of bepaalde add-ons of functies zijn toegevoegd of ingeschakeld, of dat sommige andere programmeurs bepaalde referenties in eerdere projecten hebben gebruikt.

De reden dat het goed is om deze lijst te controleren, is omdat onnodige verwijzingen systeembronnen verspillen. Als u geen XML-bestandsmanipulatie gebruikt, waarom zou u dan Microsoft XML geselecteerd houden? als u niet communiceert met een database, verwijdert u Microsoft DAO. Als u geen uitvoer naar een tekstbestand schrijft, verwijdert u Microsoft Scripting Runtime .

Als u niet zeker weet wat deze geselecteerde referenties doen, drukt u op F2 en ziet u de Objectverkenner. Aan de bovenkant van dit venster kunt u de referentiebibliotheek kiezen om te bladeren.

excel-vba8

Nadat u deze hebt geselecteerd, ziet u alle objecten en beschikbare functies, waar u op kunt klikken voor meer informatie.

Wanneer ik bijvoorbeeld op de DAO-bibliotheek klik, wordt snel duidelijk dat het hier gaat om het verbinden met en communiceren met databases.

excel-vba9

Het is verstandig om het aantal referenties dat u gebruikt in uw programmeerproject te verminderen en uw algemene toepassing efficiënter te laten verlopen.

Programmeren in Excel VBA

Het hele idee van het daadwerkelijk schrijven van code in Excel Saving Time met tekstbewerkingen in Excel Saving Time with Text Operations in Excel Excel kan magie met getallen doen en het kan evengoed met tekens omgaan. Deze handleiding laat zien hoe u tekst in spreadsheets kunt analyseren, converteren, vervangen en bewerken. Met deze basisprincipes kunt u complexe transformaties uitvoeren. Meer lezen maakt veel mensen bang, maar deze angst is echt niet nodig. Visual Basic for Applications is een zeer eenvoudige taal om te leren, en als je de gebruikelijke basispraktijken zoals hierboven vermeld volgt, zorg je ervoor dat je code schoon, efficiënt en gemakkelijk te begrijpen is.

Heb je code in VBA? Welke lessen heb je de afgelopen jaren geleerd die je kunt delen met andere lezers die voor het eerst VBA leren? Deel uw tips in de comments hieronder!

Afbeelding credits: Computer door www.BillionPhotos.com via Shutterstock, Kleurrijke Ice Cube Trays door hahauk via Shutterstock.com

In this article