09. november 2009 - 16:25Der er
12 kommentarer og 1 løsning
Undgå opdatering af faneblad under vba-loop
I Excel 2007 har jeg noget VBA som looper gennem næsten 1000 rækker og sætter rækkehøjden til 0 (=skjuler) ud fra værdien i en celle i rækken.
Det kører langsomt og skærmen står og blinker, så jeg tænkte, at der kunne optimeres ved at slå opdatering af fanebladet fra under loop'et. Er det muligt ?
Til larskoch: Det var lige præcis sådan noget jeg ledte efter. Jeg har ikke mulighed for at afprøve det nu, men det vil jeg gøre i morgen og så jeg vender tilbage. Foreløbig tak for svar.
Til excelent: Kriteriet for at skjule rækken er, om en beregning i hver af rækkerne giver værdien 0, og som derfor er uinteressant.
Kort fortalt har jeg formler liggende i csv-filer på en server. Disse filer importeres ved aktivering af en vba-kode. Det er ret smart, fordi jeg så kan have flere beregningsmodeller liggende, som brugerne vælger mellem i en dialogboks. (det er også nemt at rette eventuelle formelfejl, da de kun skal rettes 1 sted - og ikke i hvert enkelt regneark)
Fordi formlerne importeres, må brugeren ikke indsætte eller slette rækker, da formlerne jo så ikke passer. Jeg har derfor låst og skrivebeskyttet arket.
For at sikre, at der er rækker nok til alle brugerne med forskelligt behov, har jeg i langt de fleste tilfælde 500-700 rækker med værdien 0. Ved print er det også rart af slippe af med dem.
Ja - det er oplagt, hvor der er tale om en liste med ensartede data under hinanden - men det er ikke tilfældet her. Der er tale om en form for skærmdialog, hvor indtastning og resultater vises i et faneblad, og beregningerne foregår i et andet faneblad.
Regnearket består er forskellige arealer, hvoraf nogle ikke må omfattes af et autofilter. En reorganisering af regnearket er ikke hensigtsmæssig for brugerne.
Du skjuler rækker med 0 via en løkke !!! Hvad er forskellen på at skjule dem med en løkke og via Autofilter,- ud over at det er væsentlig hurtigere med filter?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.