Actualizarea ecranului VBA - Accelerarea procesului de rulare a codului

Actualizare ecran VBA Excel

Actualizarea ecranului VBA este o proprietate utilizată pentru a evita sau preveni blițurile de distragere a atenției în timp ce rulați codul și pentru ao face rapid, dezactivând Actualizarea ecranului. Putem dezactiva actualizarea ecranului setând această proprietate ca fiind falsă.

Adesea, putem simți că ecranul Excel înnebunește în timp ce macro-ul rulează și aproape că ne frustrăm. Dar cum facem față acestor situații și facem ca codul să ruleze mai repede decât cel lent obișnuit?

Actualizarea ecranului este ceva ce putem observa în timp ce macro-ul Excel rulează. Când se execută sarcina, putem observa că ecranul nostru actualizează valorile până când macro-ul își termină sarcina atribuită. Pe măsură ce ecranul nostru pâlpâie sau reîmprospătează, acesta duce la încetinirea programului Excel și durează mai mult decât de obicei pentru a finaliza sarcina.

În VBA, avem o proprietate numită „ScreenUpdating” și setăm această proprietate la FALS, astfel încât să elimine procesul de actualizare a ecranului în timp ce rulează codul.

În acest articol, ne vom lua rămas bun de la vizionarea dramelor de acțiune pe ecran în timp ce codul rulează. Astăzi veți face codul să ruleze mai repede și mai repede decât timpul obișnuit.

Când utilizați funcția de actualizare a ecranului?

Să presupunem că aveți vreo îndoială când să utilizați această tehnică. Priviți punctele de mai jos.

  • Când parcurgeți un număr mare de celule.
  • Trimiterea de e-mailuri din Excel VBA.
  • Comutarea între registrele de lucru Excel.
  • Deschiderea de noi cărți de lucru.

Cum se utilizează funcția de actualizare a ecranului în codul VBA?

Exemplul nr. 1 - Dezactivați actualizarea ecranului

De exemplu, uitați-vă la codul de mai jos.

Cod:

Sub Screen_Updating () Dim RowCount As Long Dim ColumnCount Long Long My My Number As Long MyNumber = 0 For RowCount = 1 To 50 For ColumnCount = 1 To 50 MyNumber = MyNumber + 1 Cells (RowCount, ColumnCount). Selectați Cells (RowCount, ColumnCount). .Value = Numărul meu Următoarea coloană Număr următor Urmărire rând sfârșit Sub

Cele de mai sus au o buclă VBA imbricată pentru a insera numere de serie de la prima coloană la coloana a 50- a și revine din nou și introduceți numărul de serie începând de la 51 de la al doilea rând la coloana a 50- a .

În acest fel, se va introduce până ajunge la al 50- lea rând.

În timp ce acest cod rulează, puteți observa că ecranul pâlpâie și nu puteți face nimic în afară de a urmări acest moment nebunesc.

Pentru a evita toate acestea, putem adăuga Screen Update la FALSE.

Pentru a accesa mai întâi funcția Actualizare ecran, trebuie să accesăm obiectul Aplicație.

După cum putem vedea cu obiectul Application, avem multe proprietăți și metode. Așadar, selectați Actualizare ecran din lista IntelliSense.

Notă: Trebuie să aplicați caracteristica Actualizare ecran imediat după declararea variabilelor.

După selectarea proprietății Screen Update, puneți un semn egal (=).

După cum putem vedea, două valori booleene, adică FALS & TRUE.

Pentru a opri actualizarea ecranului, setați starea la FALS.

Acum, pe măsură ce macro-ul începe să ruleze primul, va actualiza starea de actualizare a ecranului la FALS și va trece la următoarea linie.

Deoarece macro-ul a executat Screen Updating to FALSE, nu va permite ecranul să se actualizeze în timp ce codul își execută sarcina.

Exemplul 2 -

Setați întotdeauna Actualizarea ecranului la TRUE la sfârșit

Am văzut mulți oameni care setează Actualizarea ecranului la FALS, dar au uitat să o readucă la TRUE la sfârșitul macro-ului.

Setați întotdeauna Actualizarea ecranului înapoi la TRUE la sfârșitul macro-ului.

Cod:

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). (RowCount, ColumnCount) .Value = Numărul meu Următorul ColumnCount Următorul RowCount Application.ScreenUpdating = True End Sub

Articole interesante...