[excel 2003] macro werkt niet lekker als filter aanstaat.

Pagina: 1
Acties:
  • 107 views sinds 30-01-2008
  • Reageer

  • hufkes
  • Registratie: Maart 2000
  • Laatst online: 15:09

hufkes

nee, daar staat niet hufter!

Topicstarter
We gebruiken hier een excel sheet met zo'n 2000 rijen en daar zitten op een aantal kolommen ook filters. Verder is er een macro die wat dingen opnieuw berekend.

Wanneer op geen van de kolommen een filter actief is runt deze macro redelijk snel, enkele seconden.

Wanneer er echter op 1 of meer kolommen een filter is ingesteld, dan loopt die verwerkingstijd op tot meer dan een minuut en zie je dat hij na iedere stap ook opnieuw het filter gaat controleren.

Hoe kan ik er nu voor zorgen dat een filter niet tot een dergelijke vertraging leidt, ik kon twee mogelijkheden bedenken:

1) het uitvoeren van het filter wordt voorkomen in de periode dat de macro nog niet klaar is, dus effectief betekent dit dan volgens mij geen schermuitvoer ten tijde van de macro (zandlopertje in beeld?) (moet hij niet op de achtergrond toch nog steeds ook iedere keer dat filter gaan uitrekenen, anders scheelt dit alleen nog maar in scherm-update tijd en niet in rekentijd)

Ofwel
2) * lees de status van alle filters in, sla de waarden op
* zet alle filters uit
* run de macro
* zet dan de filters weer op de originele waarden.

Probleem is echter dat ik van geen van beide een idee heb hoe het te implementeren, en ik dus van optie 1 me afvraag of hij dan niet alsnog de filters wel gaat zitten uitrekenen.

Graag een schop in de goede richting, want als ik op msdn zoek dan kom ik de volgende zin tegen
Note that all the properties of the Filter object are read-only
Kun je dus überhaupt iets aan die filters instellen of begrijp ik het verkeerd?

Onderstaande signature is al >20jr oud ***hoe dan***
---
Het internet is een veelbelovend medium
....dat maar heel weinig van zijn beloftes nakomt.
Wat weg is... raak je nooit meer kwijt :P


Verwijderd

het stukje informatie van msdn klopt niet, voor het zover het over excels filter gaat tenminste.
typ eens autofilter in het immediate window (ctrl+g als je in de vbe zit) en druk op f1. in het helpvenster dat verschijnt staat alle info om je mogelijkheid 2 uit te voeren.

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Met application.screenupdating=false is er idd geen verschil meer in verwerkingstijd tussen een loopje met autofilter uit en een loopje met ingeschakeld autofilter. M.a.w. mogelijkheid 1 voldoet ook heel aardig. Niet vergeten ervoor te zorgen dat in je foutafhandeling screeupdating ook weer op true gaat, want Excel schakelt hem niet automatisch in na afloop van je routine. ;)

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • hufkes
  • Registratie: Maart 2000
  • Laatst online: 15:09

hufkes

nee, daar staat niet hufter!

Topicstarter
Aha, ik ga er maandag eens mee stoeien, maar ik zocht dus naar een object van application.. vandaar dat ik niets kon vinden... ik zocht bij document 8)7

Overigens wel slim inderdaad om er dan een nette foutafhandeling in te zetten ja, anders loopt de boel goed in het honderd. Dank voor de tips.

Onderstaande signature is al >20jr oud ***hoe dan***
---
Het internet is een veelbelovend medium
....dat maar heel weinig van zijn beloftes nakomt.
Wat weg is... raak je nooit meer kwijt :P