Avatar billede oz1aiv Nybegynder
09. november 2009 - 16:25 Der 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 ?

Mvh
Peter
Avatar billede larskoch Nybegynder
09. november 2009 - 16:51 #1
Hej... Prøv at slå skærmopdateringen fra og til i koden...

I starten af koden Application.ScreemUpdating = False

og i slutningen Application.ScreenUpdation = True
Avatar billede larskoch Nybegynder
09. november 2009 - 16:52 #2
Tastefejl...

Application.ScreenUpdating = False
Application.ScrrenUpdating = True
Avatar billede larskoch Nybegynder
09. november 2009 - 16:54 #3
Og vi bliver ved...tasterne er lidt klistrede efter ungerne har leget lidt med maskinen...

Application.ScreenUpdating = False
Application.ScrrenUpdating = True

Så lykkedes det ved at trykke lidt hårdt på tasterne
Avatar billede larskoch Nybegynder
09. november 2009 - 16:55 #4
DET BLIVER AN LANG TRÅD HVIS DET FORTSÆTTER SÅDANNE...

Application.ScreenUpdating = False
Application.ScreenUpdating = True

Sådan...
Avatar billede excelent Ekspert
09. november 2009 - 18:39 #5
Hvad er kriterie for at skjule ?
Avatar billede oz1aiv Nybegynder
09. november 2009 - 20:45 #6
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.
Avatar billede excelent Ekspert
09. november 2009 - 21:22 #7
Så var det da oplagt at anvende Autofilter til at skjule disse rækker
Avatar billede oz1aiv Nybegynder
09. november 2009 - 21:48 #8
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.
Avatar billede excelent Ekspert
09. november 2009 - 21:58 #9
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?
Avatar billede oz1aiv Nybegynder
09. november 2009 - 22:08 #10
Forskellen ligger i, at der kun kan være et autofiler på et faneblad og jeg har brug for at skjule rækker flere forskellige steder.
Avatar billede excelent Ekspert
09. november 2009 - 22:14 #11
ok
Avatar billede oz1aiv Nybegynder
10. november 2009 - 07:43 #12
Hej larskoch

Application.ScreenUpdating = False og
Application.ScreenUpdating = True
virker perfekt.

Før varede loop'et ca. 25 sek. mod nu ca. 2 sek - så det er da optimering, der vil noget.

Læg et svar - så du kan få velfortjente points.
Avatar billede larskoch Nybegynder
10. november 2009 - 09:25 #13
Her er et svar
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester