Het verbergen van regels op basis van de waarde van een bepaalde cel op die regel kan een erg lang duren als je een VBA routine dit regel voor regel laat doen. In een rapport voor mijn klant verborg ik automatisch een regel als er in de cellen van kolom A, B of C de waarde “>” was opgenomen. De routine ging 2000 regels en dus 6000 cellen langs om te kijken of de regel verborgen moest worden: totale verwerkingstijd >>> tot 2 minuten…
De meeste tijd werd in beslag genomen door de uitvoering van het commando om de regel daadwerkelijk te verbergen.
Ik heb een aanpassing gedaan in de routine en deze routine loopt nu nog wel die 6000 cellen door, maar legt in een variabele vast welke cellen de gezochte waarde “>” bevatten. Aan het einde van de routine werd in één keer de hele lijst aan cellen opgepakt en van die cellen de desbetreffende rij verborgen. De totale verwerkingstijd voor het geheel was nu minder dan 5 seconden en dat scheelt toch bijna 2 minuten.
De routine die ik hiervoor heb gebruikt is als volgt:
- De range CheckedCell is de cel die wordt gecontroleerd
- De range SearchRange is de reeks die doorzocht zal gaan worden
- De range HidingRange is de reeks cellen, waarvan de rij verborgen moet gaan worden. Deze wordt dus gevuld tijdens het uitvoeren van het zoekdeel van de routine.
Stuur mij een bericht op Hermann-Otto.Israel@hofia.com als je vragen over dit onderwerp hebt.