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?
Annonceindlæg tema
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.
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
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
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.
12. november 2007 - 14:56
#5
kan du ikke komme med et svar
12. november 2007 - 15:15
#6
Her er et svar :-)
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
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)
12. november 2007 - 21:13
#9
koden 15:28 virker fint hos mig (også med "&)
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig