Avatar billede kll1978 Nybegynder
12. november 2007 - 12:13 Der er 8 kommentarer og
1 løsning

Optimere denne VBA kode

Jeg har brug for lidt hjælp

Jeg har lavet denne VBA-kode ved hjælp af indspilning.

Sub vispb()
'
' vispb Makro
' Makro indspillet 28-09-2007 af Kelvin Luong
'

'
    Cells.Select
    Range("E1").Activate
    Selection.EntireRow.Hidden = False
   
    Range("8:8,11:13,15:18,22:23,25:27,31:31,33:34,38:42,44:49,54:54").Select
    Selection.EntireRow.Hidden = True
   
    Range("59:61,63:66,70:76,78:85,90:90").Select
    Selection.EntireRow.Hidden = True
   
    Range("99:100,102:103").Select
    Selection.EntireRow.Hidden = True
   
    Range("107:127").Select
    Selection.EntireRow.Hidden = True
   
    Range("140:142,144:147,151:152,154:156,160:160,162:163,167:171,173:178,183:183").Select
    Selection.EntireRow.Hidden = True
   
    Range("188:190,192:195,199:205,207:214,219:219,228:229").Select
    Selection.EntireRow.Hidden = True
   
    Range("E1").Select
   
End Sub


Når jeg starter makroen er den meget langsom - men når den når til række 140 og derefter kører det som smurt olie. Hvor ligger problemet og hvordan kan jeg optimere koden, så den kører mere jævn og hurtigere?
Avatar billede jkrons Professor
12. november 2007 - 12:51 #1
Dette burde speede processen noget op:


Sub vispb()

    Range("E1").Activate
    Selection.EntireRow.Hidden = False
   
    Range("8:8,11:13,15:18,22:23,25:27,31:31,33:34,38:42,44:49,54:54,59:61,63:66,70:76,78:85,90:90,99:100,102:103,107:127,140:142,144:147,151:152,154:156,160:160,162:163,167:171,173:178,183:183,188:190,192:195,199:205,207:214,219:219,228:229").EntireRow.Hidden = True
   
End Sub

Altså det helre på en lang linie og ingen Select undervejs. Select tager altid tid,og ressourser.
Avatar billede jkrons Professor
12. november 2007 - 12:52 #2
Og så kunne det selvfølgelig ikke være der. Men altså alle dine Range på samme linie, og afslutttet med

219:219,228:229").EntireRow.Hidden = True
Avatar billede jkrons Professor
12. november 2007 - 12:55 #3
Eller i en lidt mere overskuelig form:

Sub vispb()

    Range("E1").Activate
    Selection.EntireRow.Hidden = False
   
    Range("8:8,11:13,15:18,22:23,25:27,31:31,33:34,38:42," & _
    "44:49,54:54,59:61,63:66,70:76,78:85,90:90,99:100,102:103," & _
    "107:127,140:142,144:147,151:152,154:156,160:160,162:163," & _
    "167:171,173:178,183:183,188:190,192:195,199:205,207:214," & _
    "219:219,228:229").EntireRow.Hidden = True
   
End Sub
Avatar billede kll1978 Nybegynder
12. november 2007 - 14:56 #4
Nå, ja selvfølgelig. Hvorfor havde jeg ikke tænkt på det? (skal lige siges at jeg ikke nogen haj til VBA-kodning) - men ud fra det forslag du kom med, burde jeg selv havde løst den selv.

Men takker.
Avatar billede kll1978 Nybegynder
12. november 2007 - 14:56 #5
kan du ikke komme med et svar
Avatar billede jkrons Professor
12. november 2007 - 15:15 #6
Her er et svar :-)
Avatar billede kll1978 Nybegynder
12. november 2007 - 15:28 #7
Når jeg kører nedenstående kode sker der intet - kolonnerne bliver ikke skjult. Hvad har jeg gjort forkert?

Sub vispb()

    Range("E1").Activate
    Selection.EntireRow.Hidden = False
   
    Range("8:8,11:13,15:18,22:23,25:27,31:31,33:34,38:42,44:49,54:54," & _
    "59:61,63:66,70:76,78:85,90:90," & _
    "99:100,102:103," & _
    "107:127," & _
    "140:142,144:147,151:152,154:156,160:160,162:163,167:171,173:178,183:183," & _
    "188:190,192:195,199:205,207:214,219:219,228:229").EntireRow.Hidden = True
   
End Sub
Avatar billede jlemming Nybegynder
12. november 2007 - 21:08 #8
Jeg ved ikke om det er derfor, men det undre mig at der er "& i jeres linier?. Skal det ikke bare være:

Range("8:8,11:13,15:18,22:23,25:27,31:31,,38:42,44:49,54:54, _
    59:61,63:66,70:76,78:85,90:90, _
 

men det kan godt resultatet er det samme :O)
Avatar billede jlemming Nybegynder
12. november 2007 - 21:13 #9
koden 15:28 virker fint hos mig (også med "&)
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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