Πίνακας περιεχομένων:
- Απενεργοποίηση της ενημέρωσης της οθόνης
- Απενεργοποίηση αυτόματου υπολογισμού
- Εξάλειψη των ενοχλητικών μηνυμάτων
- Απλουστευμένες αναφορές αντικειμένων
- Δηλώνοντας τύπους μεταβλητών
- Χρήση του End-End Με τη δομή
Βίντεο: Υπολογισμός ταχύτητας ενός ζώου, απο ένα απλό βίντεο... 2025
Η VBA για το Excel 2016 είναι γρήγορη, αλλά δεν είναι πάντα αρκετά γρήγορη. (Τα προγράμματα υπολογιστών δεν είναι ποτέ αρκετά γρήγορα.) Συνεχίστε να διαβάζετε για να ανακαλύψετε μερικά παραδείγματα προγραμματισμού που μπορείτε να χρησιμοποιήσετε για να επιταχύνετε τις μακροεντολές σας.
Απενεργοποίηση της ενημέρωσης της οθόνης
Όταν εκτελείτε μια μακροεντολή, μπορείτε να καθίσετε και να παρακολουθήσετε όλες τις ενέργειες της οθόνης που εμφανίζονται στη μακροεντολή. Παρόλο που αυτό μπορεί να είναι διδακτικό, αφού αποκτήσετε σωστά τη μακροεντολή, είναι συχνά ενοχλητικό και μπορεί να επιβραδύνει σημαντικά την απόδοση της μακροεντολής σας. Ευτυχώς, μπορείτε να απενεργοποιήσετε την ενημέρωση οθόνης που συνήθως συμβαίνει όταν εκτελείτε μια μακροεντολή. Για να απενεργοποιήσετε την ενημέρωση της οθόνης, χρησιμοποιήστε την ακόλουθη πρόταση:
Εφαρμογή. ScreenUpdating = False
Εάν θέλετε ο χρήστης να δει τι συμβαίνει σε οποιοδήποτε σημείο κατά τη διάρκεια της μακροεντολής, χρησιμοποιήστε την παρακάτω δήλωση για να ενεργοποιήσετε ξανά την ενημέρωση οθόνης:
Εφαρμογή. ScreenUpdating = True
Για να επιδείξετε τη διαφορά ταχύτητας, εκτελέστε αυτή την απλή μακροεντολή, η οποία συμπληρώνει ένα εύρος με αριθμούς:
Sub FillRange () Dim r Long, c As Long Dim Number as Long Αριθμός = 0 Για r = 1 έως 50 Για c = 1 έως 50 Αριθμός = Αριθμός + 1 κελιά (r, c). Επιλέξτε κελιά (r, c). Τιμή = Αριθμός Επόμενο c Επόμενο r End Sub
Βλέπετε κάθε επιλεγμένο στοιχείο και την τιμή που εισάγεται στα κελιά. Τώρα εισαγάγετε την ακόλουθη πρόταση στην αρχή της διαδικασίας και εκτελέστε την ξανά:
Εφαρμογή. ScreenUpdating = False
Το εύρος πληρώνεται πολύ γρηγορότερα και δεν βλέπετε το αποτέλεσμα μέχρι να ολοκληρωθεί η μακροεντολή και η ενημέρωση οθόνης (αυτόματα) να είναι True.
Όταν εντοπίζετε κώδικα εντοπισμού σφαλμάτων, η εκτέλεση του προγράμματος τερματίζεται μερικές φορές κάπου στη μέση χωρίς να έχετε ενεργοποιήσει ξανά την οθόνη. Αυτό μερικές φορές προκαλεί το παράθυρο της εφαρμογής του Excel να μην ανταποκρίνεται πλήρως. Η έξοδος από αυτή την παγωμένη κατάσταση είναι απλή: Επιστρέψτε στο VBE και εκτελέστε την ακόλουθη εντολή στο παράθυρο Άμεση:
Εφαρμογή. ScreenUpdating = True
Απενεργοποίηση αυτόματου υπολογισμού
Αν έχετε ένα φύλλο εργασίας με πολλούς σύνθετους τύπους, μπορεί να διαπιστώσετε ότι μπορείτε να επιταχύνετε σημαντικά τα πράγματα ρυθμίζοντας τη μέθοδο υπολογισμού σε χειροκίνητη λειτουργία ενώ η μακροεντολή σας εκτελείται. Όταν ολοκληρωθεί η μακροεντολή, ρυθμίστε ξανά τη λειτουργία υπολογισμού σε αυτόματη.
Η ακόλουθη πρόταση ορίζει τη μέθοδο υπολογισμού Excel σε χειροκίνητη:
Εφαρμογή. Υπολογισμός = xlΕπιλογές υπολογισμού
Εκτελέστε την επόμενη πρόταση για να ρυθμίσετε τη λειτουργία υπολογισμού σε αυτόματη:
Εφαρμογή. Υπολογισμός = xlΥπολογισμόςΑυτόματη
Εάν ο κωδικός σας χρησιμοποιεί κελιά με τα αποτελέσματα φόρμουλας, η απενεργοποίηση του υπολογισμού σημαίνει ότι τα κελιά δεν θα υπολογιστούν εκ νέου αν δεν το αναφέρετε ρητά στο Excel!
Εξάλειψη των ενοχλητικών μηνυμάτων
Όπως γνωρίζετε, μια μακροεντολή μπορεί να εκτελέσει αυτόματα μια σειρά ενεργειών. Σε πολλές περιπτώσεις, μπορείτε να ξεκινήσετε μια μακροεντολή και στη συνέχεια να ξεφύγετε στην αίθουσα διάλειμμα ενώ το Excel κάνει το πράγμα της. Ορισμένες λειτουργίες του Excel, ωστόσο, εμφανίζουν μηνύματα που απαιτούν απάντηση από τον άνθρωπο. Αυτοί οι τύποι μηνυμάτων σημαίνουν ότι δεν μπορείτε να αφήσετε το Excel αφύλακτο ενώ εκτελεί τη μακροεντολή σας - εκτός αν γνωρίζετε το μυστικό τέχνασμα.
Μπορείτε να καθοδηγήσετε το Excel να μην εμφανίζει αυτούς τους τύπους ειδοποιήσεων ενώ εκτελείται μια μακροεντολή.Το μυστικό τέχνασμα για την αποφυγή αυτών των μηνυμάτων προειδοποίησης είναι η εισαγωγή της ακόλουθης δήλωσης VBA στη μακροεντολή σας:
Εφαρμογή. DisplayAlerts = False
Το Excel εκτελεί την προεπιλεγμένη λειτουργία για αυτούς τους τύπους μηνυμάτων. Στην περίπτωση διαγραφής ενός φύλλου, η προεπιλεγμένη λειτουργία είναι Διαγραφή. Αν δεν είστε βέβαιοι για την προεπιλεγμένη λειτουργία, εκτελέστε μια δοκιμή για να δείτε τι συμβαίνει.
Όταν λήξει η διαδικασία, το Excel επαναφέρει αυτόματα την ιδιότητα DisplayAlerts σε True. Εάν πρέπει να ενεργοποιήσετε ξανά τις ειδοποιήσεις πριν τελειώσει η διαδικασία, χρησιμοποιήστε αυτήν την πρόταση:
Εφαρμογή. DisplayAlerts = True
Απλουστευμένες αναφορές αντικειμένων
Όπως ίσως ήδη γνωρίζετε, οι αναφορές σε αντικείμενα μπορεί να γίνουν πολύ μακρά. Για παράδειγμα, μια πλήρως εξειδικευμένη αναφορά σε ένα αντικείμενο εύρους μπορεί να έχει ως εξής:
Βιβλία εργασίας ("MyBook.xlsx"). Φύλλα εργασίας ("Φύλλο1") _. Εύρος ("InterestRate")
Εάν η μακροεντολή σας χρησιμοποιεί συχνά αυτό το εύρος, ίσως θελήσετε να δημιουργήσετε μια μεταβλητή αντικειμένου χρησιμοποιώντας την εντολή Set. Για παράδειγμα, η ακόλουθη πρόταση αναθέτει αυτό το αντικείμενο εύρους σε μια μεταβλητή αντικειμένου με όνομα Rate:
Set Rate = Workbooks ("MyBook. Xlsx") _. Φύλλα εργασίας ("Φύλλο1"). Εύρος ("InterestRate")
Αφού ορίσετε αυτή τη μεταβλητή αντικειμένου, μπορείτε να χρησιμοποιήσετε τον μεταβλητό ρυθμό και όχι τη μακρά αναφορά. Για παράδειγμα, μπορείτε να αλλάξετε την τιμή του στοιχείου που ονομάζεται InterestRate:
Rate. Τιμή =. 085
Αυτό είναι πολύ πιο εύκολο να πληκτρολογήσετε από την ακόλουθη πρόταση:
Βιβλία εργασίας ("MyBook.xlsx"). Φύλλα εργασίας ("Φύλλο1"). Εύρος ("InterestRate") =. 085
Εκτός από την απλοποίηση της κωδικοποίησης, η χρήση μεταβλητών αντικειμένων επιταχύνει σημαντικά τις μακροεντολές σας.
Δηλώνοντας τύπους μεταβλητών
Συνήθως δεν χρειάζεται να ανησυχείτε για τον τύπο δεδομένων που αντιστοιχίζετε σε μια μεταβλητή. Το Excel χειρίζεται όλες τις λεπτομέρειες για σας πίσω από τις σκηνές. Για παράδειγμα, αν έχετε μια μεταβλητή που ονομάζεται MyVar, μπορείτε να αντιστοιχίσετε έναν αριθμό οποιουδήποτε τύπου σε αυτήν τη μεταβλητή. Μπορείτε ακόμη να ορίσετε μια συμβολοσειρά κειμένου αργότερα στη διαδικασία.
Εάν θέλετε οι διαδικασίες σας να εκτελούνται όσο το δυνατόν γρηγορότερα, πείτε στο Excel τι είδους δεδομένα θα εκχωρηθούν σε κάθε μία από τις μεταβλητές σας. Αυτό είναι γνωστό ως που δηλώνει έναν τύπο μεταβλητής.
Σε γενικές γραμμές, θα πρέπει να χρησιμοποιήσετε τον τύπο δεδομένων που απαιτεί τον μικρότερο αριθμό bytes, αλλά μπορεί ακόμα να χειριστεί όλα τα δεδομένα που του έχουν εκχωρηθεί. Όταν η VBA λειτουργεί με δεδομένα, η ταχύτητα εκτέλεσης εξαρτάται από τον αριθμό των bytes που διαθέτει η VBA. Με άλλα λόγια, όσο λιγότερα δεδομένα χρησιμοποιούν τα δεδομένα byte, τόσο πιο γρήγορα μπορεί να αποκτήσει πρόσβαση και να επεξεργαστεί τα δεδομένα.Μια εξαίρεση σε αυτό είναι ο τύπος δεδομένων ακέραιας. Εάν η ταχύτητα είναι κρίσιμη, αντί αυτού χρησιμοποιήστε τον τύπο μακριών δεδομένων.
Εάν χρησιμοποιείτε μια μεταβλητή αντικειμένου, μπορείτε να δηλώσετε τη μεταβλητή ως συγκεκριμένο τύπο αντικειμένου. Ακολουθεί ένα παράδειγμα:
Ρυθμός σάρωσης ως εύρος τιμών ρύθμισης = Βιβλία εργασίας ("MyBook. Xlsx") _. Φύλλα εργασίας ("Φύλλο1"). Εύρος ("InterestRate")
Χρήση του End-End Με τη δομή
Χρειάζεται να ορίσετε έναν αριθμό ιδιοτήτων για ένα αντικείμενο; Ο κώδικας σας εκτελείται γρηγορότερα αν χρησιμοποιείτε τη δομή με άκρη. Ένα επιπλέον πλεονέκτημα είναι ότι ο κωδικός σας μπορεί να είναι πιο εύκολος στην ανάγνωση.
Ο ακόλουθος κώδικας δεν χρησιμοποιεί το με άκρο με:
Επιλογή. HorizontalAlignment = Επιλογή xlCenter. VerticalAlignment = Επιλογή xlCenter. WrapText = Αληθινή επιλογή. Προσανατολισμός = 0 Επιλογή. ShrinkToFit = Ψευδής επιλογή. MergeCells = False
Εδώ είναι ο ίδιος κώδικας, που ξαναγράψατε για να χρησιμοποιήσετε το με άκρο με:
Με την επιλογή. HorizontalAlignment = xlCenter. VerticalAlignment = xlCenter. WrapText = True. Προσανατολισμός = 0. ShrinkToFit = Λάθος. MergeCells = False End Με
Όταν χρησιμοποιείτε το With-End With, βεβαιωθείτε ότι κάθε δήλωση αρχίζει με μια κουκκίδα.