Ενημέρωση οθόνης VBA | Επιτάχυνση της διαδικασίας εκτέλεσης κώδικα

Ενημέρωση οθόνης Excel VBA

Η Ενημέρωση οθόνης VBA είναι μια ιδιότητα που χρησιμοποιείται για την αποφυγή ή την αποτροπή αναλαμπών απόσπασης της προσοχής κατά την εκτέλεση του κώδικα και την καθιστά γρήγορη απενεργοποιώντας την Ενημέρωση οθόνης. Μπορούμε να απενεργοποιήσουμε την ενημέρωση οθόνης ορίζοντας αυτήν την ιδιότητα ως ψευδής.

Συχνά, μπορούμε να νιώθουμε ότι η οθόνη excel τρελαίνεται ενώ η μακροεντολή τρέχει και σχεδόν απογοητευόμαστε από αυτό. Αλλά πώς αντιμετωπίζουμε αυτές τις καταστάσεις και κάνουμε τον κώδικα να τρέχει γρηγορότερα από το συνηθισμένο αργό πράγμα;

Η ενημέρωση οθόνης είναι κάτι που μπορούμε να παρατηρήσουμε ενώ εκτελείται η μακροεντολή excel. Όταν εκτελείται η εργασία μπορούμε να παρατηρήσουμε ότι η οθόνη μας ενημερώνει τις τιμές έως ότου η μακροεντολή ολοκληρώσει την εργασία της. Καθώς η οθόνη μας τρεμοπαίζει ή αναζωογονεί οδηγεί σε επιβράδυνση του προγράμματος excel και απαιτεί περισσότερο χρόνο από το συνηθισμένο για να ολοκληρωθεί η εργασία.

Στο VBA έχουμε μια ιδιότητα που ονομάζεται "ScreenUpdating" και ορίζουμε αυτήν την ιδιότητα σε FALSE έτσι ώστε να εξαλείψει τη διαδικασία ενημέρωσης οθόνης κατά την εκτέλεση του κώδικα.

Σε αυτό το άρθρο, θα αποχαιρετήσουμε την παρακολούθηση δράματος δράσης στην οθόνη ενώ ο κώδικας εκτελείται. Σήμερα θα κάνετε τον κώδικά σας να τρέχει γρηγορότερα και πιο γρήγορα από τη συνηθισμένη ώρα σας.

Πότε να χρησιμοποιήσετε τη λειτουργία ενημέρωσης οθόνης;

Εάν έχετε οποιαδήποτε αμφιβολία πότε να χρησιμοποιήσετε αυτήν την τεχνική. Εξετάστε τα παρακάτω σημεία.

  • Όταν πραγματοποιείτε βρόχο μέσω μεγάλου αριθμού κελιών.
  • Αποστολή email από το Excel VBA.
  • Εναλλαγή μεταξύ βιβλίων εργασίας excel.
  • Άνοιγμα νέων βιβλίων εργασίας.

Πώς να χρησιμοποιήσετε τη λειτουργία ενημέρωσης οθόνης στον κώδικα VBA;

Μπορείτε να πραγματοποιήσετε λήψη αυτού του προτύπου VBA ScreenUpdating Excel εδώ - VBA ScreenUpdating Excel Template

Παράδειγμα # 1 - Απενεργοποίηση ενημέρωσης οθόνης

Για παράδειγμα δείτε τον παρακάτω κώδικα.

Κώδικας:

 Sub Screen_Updating () Dim RowCount ως Long Dim ColumnCount As Long Dim MyNumber Long LongNNumber = 0 For RowCount = 1 to 50 For ColumnCount = 1 to 50 MyNumber = MyNumber + 1 Cells (RowCount, ColumnCount). Επιλέξτε κελιά (RowCount, ColumnCount) .Value = MyNumber Next ColumnCount Επόμενο RowCount End Sub 

Τα παραπάνω έχουν ένθετο βρόχο VBA για την εισαγωγή σειριακών αριθμών από την πρώτη στήλη έως την 50η στήλη και επανέρχεται ξανά και εισάγετε σειριακό αριθμό ξεκινώντας από το 51 από τη δεύτερη σειρά έως την 50η στήλη.

Έτσι, θα εισαχθεί μέχρι να φτάσει στην 50η σειρά.

Ενώ αυτός ο κώδικας εκτελείται, μπορείτε να παρατηρήσετε ότι η οθόνη σας τρεμοπαίζει και δεν μπορείτε να κάνετε τίποτα εκτός από το να παρακολουθήσετε αυτήν την τρελή στιγμή.

Για να αποφύγουμε όλα αυτά μπορούμε να προσθέσουμε την Ενημέρωση οθόνης στο FALSE.

Για να αποκτήσουμε πρόσβαση στη λειτουργία Ενημέρωση οθόνης πρώτα πρέπει να έχουμε πρόσβαση στο αντικείμενο Εφαρμογή.

Όπως μπορούμε να δούμε με το αντικείμενο Application έχουμε πολλές ιδιότητες και μεθόδους. Έτσι, επιλέξτε Ενημέρωση οθόνης από τη λίστα IntelliSense.

Σημείωση: Πρέπει να εφαρμόσετε τη δυνατότητα ενημέρωσης οθόνης αμέσως μετά τη δήλωση των μεταβλητών.

Αφού επιλέξετε την ιδιότητα "Ενημέρωση οθόνης", τοποθετήστε ένα ίσο σύμβολο (=).

Όπως μπορούμε να δούμε δύο Boolean τιμές, δηλαδή FALSE & TRUE.

Για να διακόψετε την ενημέρωση της οθόνης, ορίστε την κατάσταση σε FALSE.

Τώρα, καθώς η μακροεντολή αρχίζει να τρέχει πρώτα, θα ενημερώσει την κατάσταση ενημέρωσης οθόνης σε FALSE και θα προχωρήσει στην επόμενη γραμμή.

Δεδομένου ότι η μακροεντολή εκτελείται στην Ενημέρωση οθόνης σε FALSE, δεν θα επιτρέπει την ενημέρωση της οθόνης ενώ ο κώδικας εκτελεί την εργασία του.

Παράδειγμα # 2 -

Ορίστε πάντα την ενημέρωση οθόνης σε ΑΛΗΘΕΙΑ στο τέλος

Έχω δει πολλά άτομα να ορίζουν την Ενημέρωση οθόνης σε FALSE, αλλά ξέχασα να την επαναφέρω σε ΑΛΗΘΕΙΑ στο τέλος της μακροεντολής.

Ορίστε πάντα την Ενημέρωση οθόνης πίσω σε ΑΛΗΘΕΙΑ στο τέλος της μακροεντολής.

Κώδικας:

 Sub Screen_Updating () Dim RowCount ως Long Dim ColumnCount As Long Dim MyNumber ως 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 = MyNumber Next ColumnCount Next RowCount Application.ScreenUpdating = Υπολογισμός True End 

$config[zx-auto] not found$config[zx-overlay] not found