Innehållsförteckning:
- Stäng av skärmuppdatering
- Släcker automatisk beräkning
- Eliminera de irriterande varningsmeddelandena
- Förenkla objektreferenser
- Deklarera variabla typer
- Använda med-slut med struktur
Video: 6 Ways to Speed up your Excel Macros 2024
VBA för Excel 2016 är snabb, men det är inte alltid tillräckligt snabbt. (Datorprogrammen är aldrig tillräckligt snabba.) Fortsätt läsa för att upptäcka några programmeringsexempel som du kan använda för att påskynda dina makron.
Stäng av skärmuppdatering
När du kör ett makro kan du luta dig tillbaka och titta på all skärmverkan som inträffar i makron. Även om du gör det här kan det vara lärorikt, efter att du har fått makroen att fungera ordentligt, är det ofta irriterande och kan långsamt minska ditt makros prestanda. Lyckligtvis kan du inaktivera skärmuppdateringen som normalt inträffar när du kör ett makro. För att stänga av skärmens uppdatering, använd följande uttalande:
Application. ScreenUpdating = False
Om du vill att användaren ska se vad som händer när som helst under makroet använder du följande påstående om du vill aktivera skärmens uppdatering:
Application. ScreenUpdating = True
För att visa skillnaden i hastighet, kör det här enkla makroet, vilket fyller ett intervall med siffror:
Sub FillRange () Dimma så länge, c Så länge Dim Dim Number as Long Number = 0 För r = 1 till 50 för c = 1 till 50 nummer = antal + 1 celler (r, c). Välj celler (r, c). Värde = Antal Nästa c Nästa r Slut Sub
Du ser att varje cell väljs och värdet anges i cellerna. Lägg nu följande inlägg i början av proceduren och kör det igen:
Application. ScreenUpdating = False
Sortimentet fylls mycket snabbare och du ser inte resultatet tills makroen är klar och uppdateringen av skärmen ställs automatiskt in på True.
När du är debugging-kod slutar programkörningen ibland någonstans i mitten utan att du har vänt på skärmuppdatering igen. Detta orsakar ibland att Excel-applikationsfönstret blir helt oansvarigt. Vägen ut ur denna frusna tillstånd är enkel: Gå tillbaka till VBE, och kör följande påstående i fönstret Omedelbart:
Application. ScreenUpdating = True
Släcker automatisk beräkning
Om du har ett arbetsblad med många komplexa formler kan du upptäcka att du kan påskynda saker väsentligt genom att ställa in beräkningsläget manuellt medan makroet körs. När makroen är klar, ställ in beräkningsläget tillbaka till automatiskt.
Följande redogörelse ställer in Excel-beräkningsläget till manuell:
Application. Beräkning = xlCalculationManual
Utför nästa uttalande för att ställa in beräkningsläget automatiskt:
Application. Beräkning = xlCalculationAutomatic
Om din kod använder celler med formelresultat, innebär avstängning att cellerna inte kommer att beräknas om du inte uttryckligen säger Excel att göra det!
Eliminera de irriterande varningsmeddelandena
Som du vet kan ett makro automatiskt utföra en rad åtgärder. I många fall kan du starta ett makro och sedan hänga i pausrummet medan Excel gör sin sak. Vissa Excel-funktioner visar dock meddelanden som kräver ett mänskligt svar. Dessa typer av meddelanden innebär att du inte kan lämna Excel obevakad när den kör ditt makro - om du inte känner till det hemliga tricket.
Du kan instruera Excel att inte visa dessa typer av varningar när du kör ett makro.Det hemliga tricket att undvika dessa varningsmeddelanden sätter in följande VBA-formulär i ditt makro:
Application. DisplayAlerts = False
Excel kör standardoperationen för dessa typer av meddelanden. Vid radering av ett ark är standardoperationen Radera. Om du inte är säker på vad standardoperationen är, utför ett test för att se vad som händer.
När proceduren avslutas, återställer Excel automatiskt egenskapen DisplayAlerts till True. Om du behöver slå på varningarna igen innan proceduren avslutas, använd det här uttalandet:
Application. DisplayAlerts = True
Förenkla objektreferenser
Som du säkert vet redan kan referenser till objekt bli mycket långa. Till exempel kan en fullständigt kvalificerad referens till ett Range-objekt se ut så här:
Arbetsböcker ("MyBook. Xlsx"). Arbetsblad ("Sheet1") _. Område ("InterestRate")
Om ditt makro ofta använder detta intervall kanske du vill skapa en objektvariabel med hjälp av kommandot Ange. Till exempel tilldelas följande raderingsobjekt till en objektvariabel med namnet Rate:
Set Rate = Workbooks ("MyBook. Xlsx") _. Arbetsblad (”Blad1”). Range ("InterestRate")
När du har definierat den här objektvariabeln kan du använda variabelhastigheten snarare än den långa referensen. Du kan till exempel ändra värdet på cellen som heter InterestRate:
Rate. Värde =. 085
Det här är mycket lättare att skriva än följande uttalande:
Arbetsböcker ("MyBook. Xlsx"). Arbetsblad (”Blad1”). _ Range ("InterestRate") =. 085
Förutom att förenkla din kodning, använder objektvariablerna din makron avsevärt.
Deklarera variabla typer
Du behöver vanligtvis inte oroa dig för vilken typ av data du tilldelar en variabel. Excel hanterar alla detaljer för dig bakom kulisserna. Om du till exempel har en variabel som heter MyVar, kan du tilldela ett antal av vilken typ som helst till den variabeln. Du kan till och med tilldela en textsträng till den senare i proceduren.
Om du vill att dina förfaranden ska utföras så snabbt som möjligt, berätta Excel vilken typ av data som ska tilldelas var och en av dina variabler. Detta är känt som deklarerar en variabels typ.
I allmänhet bör du använda datatypen som kräver det minsta antalet bitar men ändå kan hantera all data som tilldelats den. När VBA arbetar med data beror exekveringshastigheten på antalet bytes som VBA har till sitt förfogande. Med andra ord, ju färre bytesdataanvändningar, desto snabbare VBA kan komma åt och manipulera data.Ett undantag till detta är integerdatatypen. Om hastigheten är kritisk, använd den långa datatypen istället.
Om du använder en objektvariabel kan du deklarera variabeln som en viss objekttyp. Här är ett exempel:
Dimma som Range Set Rate = Arbetsböcker ("MyBook. Xlsx") _. Arbetsblad (”Blad1”). Range ("InterestRate")
Använda med-slut med struktur
Behöver du ange ett antal egenskaper för ett objekt? Din kod körs snabbare om du använder strukturen With-End With. En ytterligare fördel är att din kod kan vara lättare att läsa.
Följande kod använder inte Slut med:
Val. HorizontalAlignment = xlCenter Selection. VerticalAlignment = xlCenter Selection. WrapText = True Selection. Orientering = 0 Urval. ShrinkToFit = Felval. MergeCells = False
Här är samma kod som omskrivs för att använda With-End With:
Med Selection. HorizontalAlignment = xlCenter. VerticalAlignment = xlCenter. WrapText = True. Orientering = 0. ShrinkToFit = False. MergeCells = False End With
När du använder With-End With, se till att varje uttalande börjar med en punkt.