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

Πίνακας περιεχομένων

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

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

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

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

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

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

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

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

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

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

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

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

Κώδικας:

Υπο οθόνη_Ενημέρωση () Dim RowCount ως 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). Επιλέξτε Cells (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

ενδιαφέροντα άρθρα...