Voorwaardelijke opmaak      

 

Zonder VBA

 

Een van de leukste tools in Excel is zonder twijfel ‘Voorwaardelijke opmaak’ , te vinden in het menu: ‘Opmaak’.

Deze tool geeft vaak uw werkblad dat ietsje meer waardoor het ‘professioneel gaat lijken.  Bovendien is het helemaal niet zo moeilijk als het lijkt.

 

Mogelijkheden:

 

Beperkingen:

 

Verplichtte vaardigheden om goed met voorwaardelijke opmaak te kunnen werken:

De kracht van voorwaardelijke opmaak ligt vooral in het gebruik van formules

 

Met VBA:

 

Nadelen:

Ik begin hier met de nadelen,  omdat ik vind dat die veel belangrijker zijn dan de voordelen.  Bovendien moet de standaard functie ‘voorwaardelijke opmaak’ in Excel ruim voldoen voor hetgeen men wenst te bereiken.

 

Voordelen:

Slechts één voordeel:  Je bent niet meer beperkt tot 3 opmaken.  Dit is meteen ook een nadeel, vermits voorwaardelijke opmaak bedoeld is om iets te verduidelijken.  Een bonte verzameling van kleurtjes maakt de zaak echter verre van duidelijk.

 

Methoden:

Voorwaardelijke opmaak via VBA moet steeds aan een Event-macro gekoppeld worden.

Volgende Events zijn hiervoor bruikbaar:

  1. Private Sub Worksheet_Change(ByVal Target As Excel.Range)
  2. Private Sub Worksheet_Activate()
  3. Private Sub Worksheet_SelectionChange(ByVal Target As Range)

 

De eerste event verdient mijn voorkeur.  Deze werkt telkens er iets in het werkblad gewijzigd wordt.  Dit in tegenstelling tot de laatste methode, die in aktie treed telkens je de selectie wijzigt.  Deze laatste event zorgt dus voor een constante belasting van uw systeem.

De tweede event belast het systeem het minste, maar treed pas in actie op het ogenblik dat je het werkblad activeert.  Niet vroeger, maar ook niet later.

 

Bij het gebruik van de eerste en de tweede event heb je vervolgens de keuze om of alle cellen te controleren, of enkel de gewijzigde cel.  Eerste methode neemt weer meest tijd en geheugen in beslag.  Tweede methode is het minst betrouwbaar.  Eerste methode zou ik dus absoluut niet gebruiken in combinatie met de derde Event.

 

Alle cellen controleren:

 

Dim x As Range

    For Each x In ActiveSheet.UsedRange

 

Enkel de gewijzigde cel controleren:

 

With Target

 

Een voorbeeld van al deze zaken kan je hier bekijken.