Op zoek naar de kortste routine
Opgenomen code bevat doorgaans heel wat overbodige instellingen, die we mogen schrappen als we er zeker van zijn dat de instellingen van (bijvoorbeeld) de zoek/vervangdialoog nog steeds de standaardwaarden vertonen. Laten we de Option Explicit achterwege (een gevaarlijke, maar vaak toegepaste slordigheid in VBA en verwante talen), dan kunnen we eveneens de declaraties overboord gooien. Dit levert de volgende minimalistische subroutine op, die precies hetzelfde effect heeft:
Klik hier om de code te downloaden
Maar besparen op tikwerk is niet altijd een goede zaak. In dit voorbeeld hebben we de Len-functie en (zelfs tot tweemaal toe) de Mid-functie in de lus ondergebracht. Dit betekent dat de berekening van hun resultaat bij elke herhaling opnieuw uitgevoerd gaat worden. Niet dat we de extra rekenkracht die dit vergt, echt gaan voelen op een doorsnee hedendaagse pc, maar in complexe programma's, waarin misschien nog veel andere dingen dienen te gebeuren in zo'n lus, is dit wel een aandachtspunt.
Matrices
Om knip- en plakwerk via allerlei tekstfuncties te vermijden, vormen matrices ('arrays' in het Engels) een interessant alternatief. We stoppen eerst onze eindetekens als losse karakters in een matrix door middel van de Array-functie, en doorlopen die vervolgens in een lus. Geen functies meer nodig, geen onnodig rekenen. Opgelet: het eerste element van een matrix krijgt altijd de index 0, tenzij we dit expliciet anders zouden willen. Dit laatste is instelbaar met de instructie Option Base.
Klik hier om de code te downloaden
Willen we vermijden om de bovenlimiet van de matrix hard gecodeerd in de subroutine te hebben, dan kunnen we ook de functie UBound (als in 'Upper Bound' of bovengrens) gebruiken.
For k = 0 To UBound(AlleEindeTekens)
Als de matrix AlleEindeTekens drie elementen bevat, dan zal dat standaard op de plaatsen met index 0, 1 en 2 zijn, en dan is UBound(AlleEindeTekens) gelijk aan de hoogste van die indices, dus 2.
Drie subroutines, driemaal hetzelfde effect, maar het blijft zoeken naar het beste compromis tussen hoeveelheid tikwerk en leesbaarheid.
Tot slot
Laat u niet afschrikken door de ogenschijnlijke complexiteit van de macrotaal van Word. Eenvoudig is anders, maar met een beetje experimenteren is er heel veel mogelijk. Via deze link vindt u meer informatie en enkele uitgebreide voorbeelden, zodat u binnen een oogwenk uw eigen macro in elkaar sleutelt! Succes!
En de toekomst?
Microsoft kwam voor het eerst op de proppen met VBA in 1993. We hebben dus te maken met een heus oudje in de informaticawereld. Sinds 2007 wordt het ook niet langer ter beschikking gesteld aan derden. Maar gezien het nog steeds achter de meest recente versie 2007 en de toekomstige 2010 release van Microsoft Office te vinden is en zal zijn, en Microsoft er garant voor staat dat alle VBA-ontwikkelingen nog perfect gaan werken onder Vista, Windows 7 en Server 2008, zijn we zeker nog enkele jaren zoet met deze programmeertaal.