VBA-skärmuppdateringsegenskap

Excel VBA-skärmuppdatering

VBA Screen Updating är en egenskap som används för att undvika eller förhindra distraktionsblinkar när du kör koden och göra det snabbt genom att stänga av Screen Updating. Vi kan stänga av skärmuppdateringen genom att ställa in den här egenskapen som falsk.

Ofta kan vi känna att excel-skärmen blir galen medan makrot körs och vi blir nästan frustrerade över det. Men hur hanterar vi dessa situationer och får koden att gå snabbare än den vanliga långsamma?

Skärmuppdatering är något vi kan märka medan excel-makrot körs. När uppgiften körs kan vi märka att vår skärm uppdaterar värdena tills makrot avslutar sin tilldelade uppgift. När vår skärm flimrar eller uppdateras leder det till att sakta ner excelprogrammet och det tar längre tid än vanligt att slutföra uppgiften.

I VBA har vi en egenskap som heter “ScreenUpdating” och vi ställer in den här egenskapen till FALSE så att den eliminerar processen med skärmuppdatering medan koden körs.

I den här artikeln kommer vi att säga adjö till att titta på actiondrama på skärmen medan koden körs. Idag kommer du att få din kod att gå snabbare och snabbare än din vanliga tid.

När ska skärmuppdateringsfunktionen användas?

Om du är osäker på när du ska använda denna teknik. Titta på punkterna nedan.

  • När du går igenom ett stort antal celler.
  • Skicka e-post från Excel VBA.
  • Växla mellan Excel-arbetsböcker.
  • Öppna nya arbetsböcker.

Hur använder jag skärmuppdateringsfunktionen i VBA-koden?

Du kan ladda ner denna VBA ScreenUpdating Excel-mall här - VBA ScreenUpdating Excel-mall

Exempel # 1 - Stäng av skärmuppdatering

För ett exempel, se nedanstående kod.

Koda:

 Sub Screen_Updating () Dim RowCount As Long Dim ColumnCount As Long Dim MyNumber As Long MyNumber = 0 For RowCount = 1 To 50 For ColumnCount = 1 To 50 MyNumber = MyNumber + 1 Cells (RowCount, ColumnCount) .Välj celler (RowCount, ColumnCount) .Value = MyNumber Next ColumnCount Next RowCount End Sub 

Ovanstående har kapslat VBA-slinga för att infoga serienummer från den första kolumnen till den 50: e kolumnen och återkommer igen och infoga serienumret från 51 från andra raden till 50: e kolumnen.

Så här kommer den att infoga tills den når 50: e raden.

Medan den här koden körs kan du märka att din skärm flimrar och du kan inte göra någonting förutom att titta på det här galna ögonblicket.

För att undvika alla dessa kan vi lägga till Screen Updating till FALSE.

För att komma åt funktionen för skärmuppdatering måste vi först komma åt applikationsobjektet.

Som vi kan se med applikationsobjektet har vi många egenskaper och metoder. Så välj Skärmuppdatering från IntelliSense-listan.

Obs! Du måste tillämpa skärmuppdateringsfunktionen omedelbart efter deklarationen av variablerna.

När du har valt egenskapen Skärmuppdatering sätter du ett likhetstecken (=).

Som vi kan se två booleska värden dvs FALSE & TRUE.

För att stoppa skärmuppdateringen ställer du in status på FALSE.

Nu när makrot börjar köra först kommer det att uppdatera skärmens uppdateringsstatus till FALSE och fortsätta till nästa rad.

Eftersom makroexekverad skärmuppdatering till FALSE tillåter inte skärmen att uppdateras medan koden kör sin uppgift.

Exempel # 2 -

Ställ alltid in skärmuppdatering till SANT i slutet

Jag har sett många människor ställa in skärmuppdateringen till FALSE men glömde att ställa tillbaka den till SANT i slutet av makrot.

Ställ alltid in skärmuppdateringen på SANT i slutet av makrot.

Koda:

 Sub Screen_Updating () Dim RowCount As Long Dim ColumnCount As Long Dim MyNumber As Long Application.ScreenUpdating = False MyNumber = 0 For RowCount = 1 To 50 For ColumnCount = 1 To 50 MyNumber = MyNumber + 1 Cells (RowCount, ColumnCount). Välj celler (RowCount, ColumnCount) .Value = MyNumber Next ColumnCount Next RowCount Application.ScreenUpdating = True End Sub