Excel VBA-schermupdate
VBA-schermupdate is een eigenschap die wordt gebruikt om afleidingsflitsen tijdens het uitvoeren van de code te voorkomen of te voorkomen en deze snel te maken door Schermupdates uit te schakelen. We kunnen het bijwerken van het scherm uitschakelen door deze eigenschap als false in te stellen.
Vaak voelen we dat het Excel-scherm gek wordt terwijl de macro draait en we raken daardoor bijna gefrustreerd. Maar hoe gaan we om met deze situaties en zorgen we ervoor dat de code sneller werkt dan normaal?
Schermupdates is iets dat we kunnen opmerken terwijl de Excel-macro wordt uitgevoerd. Wanneer de taak wordt uitgevoerd, kunnen we zien dat ons scherm de waarden bijwerkt totdat de macro de toegewezen taak voltooit. Als ons scherm flikkert of ververst, leidt dit tot vertraging van het Excel-programma en duurt het langer dan normaal om de taak te voltooien.
In VBA hebben we een eigenschap genaamd "ScreenUpdating" en we stellen deze eigenschap in op FALSE, zodat het proces van schermupdate wordt geëlimineerd terwijl de code actief is.
In dit artikel nemen we afscheid van het kijken naar actiedrama op het scherm terwijl de code wordt uitgevoerd. Vandaag laat u uw code sneller en sneller werken dan uw gebruikelijke tijd.
Wanneer de functie voor schermupdate gebruiken?
Als u twijfelt wanneer u deze techniek moet gebruiken. Kijk naar de onderstaande punten.
- Wanneer u een groot aantal cellen doorloopt.
- E-mails verzenden vanuit Excel VBA.
- Schakelen tussen Excel-werkmappen.
- Nieuwe werkmappen openen.
Hoe de functie Schermupdate in VBA-code te gebruiken?
U kunt deze VBA ScreenUpdating Excel-sjabloon hier downloaden - VBA ScreenUpdating Excel-sjabloonVoorbeeld # 1 - Schakel schermupdate uit
Kijk voor een voorbeeld naar de onderstaande code.
Code:
Sub Screen_Updating () Dim RowCount As Long Dim ColumnCount As Long Dim MyNumber As Long MyNumber = 0 Voor RowCount = 1 tot 50 Voor ColumnCount = 1 tot 50 MyNumber = MyNumber + 1 Cellen (RowCount, ColumnCount) .Selecteer Cellen (RowCount, ColumnCount) .Value = MyNumber Volgende ColumnCount Volgende RowCount End Sub
Het bovenstaande heeft een VBA-lus genest om serienummers in te voegen van de eerste kolom tot de 50e kolom en komt opnieuw terug en voegt het serienummer in vanaf 51 van de tweede rij tot de 50e kolom.
Op deze manier wordt het ingevoegd totdat het de 50e rij bereikt.
Terwijl deze code wordt uitgevoerd, kunt u uw scherm flikkeren en kunt u niets anders doen dan dit gekke moment bekijken.
Om al deze problemen te vermijden, kunnen we Screen Updating toevoegen aan FALSE.
Om toegang te krijgen tot de functie Schermupdate, hebben we eerst toegang tot het toepassingsobject.
Zoals we kunnen zien met het Application-object, hebben we veel eigenschappen en methoden. Selecteer dus Screen Updating in de IntelliSense-lijst.
Opmerking: u moet de functie Screen Updating onmiddellijk toepassen na de declaratie van de variabelen.
Nadat u de eigenschap Screen Updating hebt geselecteerd, plaatst u een gelijkteken (=).
Zoals we kunnen zien twee Booleaanse waarden, namelijk FALSE & TRUE.
Om het bijwerken van het scherm te stoppen, stelt u de status in op FALSE.
Nu de macro als eerste begint te lopen, wordt de updatestatus van het scherm bijgewerkt naar FALSE en doorgaan naar de volgende regel.
Aangezien de macro Screen Updating heeft uitgevoerd naar FALSE, kan het scherm niet worden bijgewerkt terwijl de code zijn taak uitvoert.
Voorbeeld # 2 -
Stel Schermupdate altijd in op TRUE aan het einde
Ik heb gezien dat veel mensen de schermupdate op FALSE hebben ingesteld, maar vergaten om het aan het einde van de macro weer op WAAR in te stellen.
Zet Schermupdate altijd weer op TRUE aan het einde van de macro.
Code:
Sub Screen_Updating () Dim RowCount As Long Dim ColumnCount As Long Dim MyNumber As Long Application.ScreenUpdating = False MyNumber = 0 Voor RowCount = 1 tot 50 Voor ColumnCount = 1 tot 50 MyNumber = MyNumber + 1 Cellen (RowCount, ColumnCount) .Selecteer Cellen (RowCount, ColumnCount) .Value = MyNumber Volgende ColumnCount Volgende RowCount Application.ScreenUpdating = True End Sub