Σε όλες τις γλώσσες προγραμματισμού, έχουμε προσδιοριστές μεταβλητής πρόσβασης που ορίζουν από πού μπορεί να έχει πρόσβαση μια καθορισμένη μεταβλητή. Το Excel VBA δεν αποτελεί εξαίρεση. Το VBA έχει επίσης προσδιοριστικά πεδίου. Αυτοί οι προσδιοριστές πεδίου μπορούν να χρησιμοποιηθούν για να ορίσουν την ορατότητα/το εύρος μιας μεταβλητής στο Excel VBA.
Στο Excel VBA, έχουμε τρεις τύπους προσδιοριστικών πεδίου:
- Επίπεδο διαδικασίας
- Ιδιωτικό - Επίπεδο Ενότητας
- Δημόσιο - Επίπεδο Έργου
Εύρος μεταβλητού πεδίου διαδικασίας VBA
Οι μεταβλητές που δηλώνονται μέσα σε μια υπορουτίνα μπορούν να έχουν πρόσβαση μόνο σε αυτήν τη διαδικασία/συνάρτηση. Έχουν πεδίο εφαρμογής σε επίπεδο διαδικασίας. Συνήθως δηλώνονται με λέξη -κλειδί Dim. Εάν η ενότητα είναι σιωπηρή επιλογή, τότε η μεταβλητή μπορεί να μην έχει δηλωθεί, απλώς να χρησιμοποιηθεί απευθείας.
Στο παρακάτω παράδειγμα, έχουμε μια δοκιμή εμβέλειας υπορουτίνας που έχει μεταβλητές x και y. Όταν τρέχουμε την πρώτη υπορουτίνα, λειτουργεί τέλεια και εκτυπώνει το άθροισμα των Χ και Υ
Επιλογή ρητή δευτερεύουσα δοκιμή () Dim x, y Ως ακέραιος «Μεταβλητή επιπέδου διαδικασίας σε VBA x = 2 y = 3 Debug. Εκτύπωση x + y Τέλος υπο -ποσό () x = 5 y = 7 Debug. Εκτύπωση x + y Τέλος υπο
Αλλά όταν εκτελείτε το άθροισμα υπορουτίνας, εμφανίζει σφάλμα ότι η μεταβλητή δεν δηλώνεται. Γιατί; Επειδή τα X και Y είναι ιδιωτικά για το πεδίο εφαρμογήςTest και το άθροισμα υπορουτίνας δεν έχει πρόσβαση σε αυτά. Επομένως, το sub αντιμετωπίζει σφάλμα.
VBA Ιδιωτική μεταβλητή- Πεδίο εφαρμογής ενότητας
Όταν θέλετε να δηλώσετε μια μεταβλητή στην οποία χρειάζεται πρόσβαση σε ολόκληρη τη λειτουργική μονάδα, τότε δηλώνετε αυτήν τη μεταβλητή ως ιδιωτική στο πάνω μέρος της ενότητας, πριν από οποιαδήποτε υπορουτίνα ή λειτουργία.
Οι μεταβλητές που δηλώνονται πριν από οποιαδήποτε υπορουτίνα, στο module, είναι από προεπιλογή ιδιωτικές. Ακόμα κι αν τα δηλώσετε με λέξη -κλειδί Dim. Αλλά για να είμαστε συγκεκριμένοι, είναι συνετό να χρησιμοποιούμε τη λέξη -κλειδί Private.
Οι παρακάτω δύο διαδικασίες βρίσκονται στην ίδια ενότητα, ενότητα 1.
Επιλογή ρητή μεταβλητή επιπέδου μονάδας σε VBA. Και οι δύο μεταβλητές x και y είναι ιδιωτικές σε αυτήν την ενότητα. και "μπορεί να έχει πρόσβαση από οποιοδήποτε υποσύστημα ή λειτουργία μέσα σε αυτήν την ενότητα. Dim x As Integer Private y Ως Integer ΥποπεριορισμόςTest () 'Σε αυτό μπορείτε να έχετε πρόσβαση από οποιαδήποτε ενότητα του έργου x = 2 y = 3 Debug. Εκτύπωση x + y Τέλος υπο Ιδιωτικό δευτερεύον ποσό () "Δεν είναι δυνατή η πρόσβαση σε αυτό από άλλες ενότητες x = 5 y = 7 Debug. Εκτύπωση x + y Τέλος υπο
Οι δύο παραπάνω συναρτήσεις θα λειτουργούν τέλεια καθώς οι μεταβλητές x και y είναι οι ιδιωτικές μεταβλητές αυτής της ενότητας.
Σπουδαίος: Οι τελευταίες τιμές που αποθηκεύονται στα x και y διατηρούνται έως ότου ολοκληρωθεί η ενότητα. Εάν εκτελέσουμε πρώτα το δευτερεύον πεδίο δοκιμής και δεν αρχικοποιήσουμε τις τιμές των x και y σε αθροιστικό ποσό και το εκτελέσουμε, τότε η αρχική τιμή των x και y θα παραμείνει αμετάβλητη.
Η παρακάτω υπορουτίνα ορίζεται σε ξεχωριστή λειτουργική μονάδα, μονάδα 2. Όταν προσπαθώ να αποκτήσω πρόσβαση στη μεταβλητή από άλλη ενότητα, η διαδικασία (ή η λειτουργία) VBA αντιμετωπίζει σφάλμα.
Αν όμως προσπαθήσω να καλέσω το υποπρόγραμμα άθροισμα από την ενότητα 1 στην ενότητα 2, αυτό λειτουργεί τέλεια. Για να κάνετε τη συνάρτηση και τις υπορουτίνες σας ιδιωτικές στη λειτουργική μονάδα, χρησιμοποιήστε τη λέξη -κλειδί Ιδιωτικό πριν από το δευτερεύον και τη συνάρτηση.
Σημείωση:- Οι μεταβλητές που δηλώνονται πριν από οποιαδήποτε υπορουτίνα ή συνάρτηση, σε μια ενότητα είναι από προεπιλογή ιδιωτικές για τη μονάδαΤο Μπορείτε να χρησιμοποιήσετε το Ιδιωτικόςλέξη -κλειδί. Αλλά οι συναρτήσεις και οι υπορουτίνες είναι δημόσιες από προεπιλογή και είναι προσβάσιμες από οποιαδήποτε ενότητα σε ένα έργο. Για να κάνετε τις λειτουργίες και τις υπορουτίνες ιδιωτικές στη λειτουργική μονάδα, πρέπει να χρησιμοποιήσετε τη λέξη -κλειδί Private.
Δημόσιες μεταβλητές- Πεδίο επιπέδου έργου
Όπως μάθαμε στα παραπάνω παραδείγματα, η συνάρτηση και οι υπορουτίνες είναι από προεπιλογή δημόσιες και είναι προσβάσιμες από οποιαδήποτε ενότητα αλλά οι μεταβλητές δεν είναι. Για να καταστήσετε μια μεταβλητή προσβάσιμη από οποιαδήποτε ενότητα στο Excel VBA,χρησιμοποιούμε δημόσια λέξη -κλειδί.
Για να δηλώσετε μια δημόσια μεταβλητή σε ένα έργο, τις έχετε δηλώσει στο επάνω μέρος της ενότητας, πριν από οποιαδήποτε συνάρτηση ή υπορουτίνα με τη δημόσια λέξη -κλειδί. Ο παρακάτω κωδικός είναι γραμμένος στην ενότητα 1.
Επιλογή ρητή «Μεταβλητή επιπέδου έργου σε VBA. Δημόσιο x Ως ακέραιος Δημόσιος y Ως ακέραιος Δημόσια υποπεριοχήTest () 'Σε αυτήν μπορείτε να έχετε πρόσβαση από οποιαδήποτε ενότητα του έργου x = 2 y = 3 End Sub Private Sub sum ()' Δεν είναι δυνατή η πρόσβαση σε αυτήν από άλλες ενότητες x = 5 y = 7 Debug. Εκτύπωση x + y Τέλος υπο
Και αυτή η υπορουτίνα βρίσκεται σε μια άλλη ενότητα, την ενότητα 2.
Επιλογή Explicit Sub mul () Πεδίο κλήσης Δοκιμή "Άθροισμα κλήσεων" δεν θα λειτουργήσει καθώς είναι ιδιωτικό για την ενότητα 1 Εντοπισμός σφαλμάτων. Εκτύπωση x * y Τέλος υπο
Αυτή τη φορά λειτουργεί τέλεια.
Πρώτα κάλεσα την υπορουτίνα πεδίο εφαρμογήςTest. Δεδομένου ότι το πεδίο εφαρμογής Test είναι δημόσιο, καλείται. Αρχικοποιεί τις τιμές των x και y. Στη συνέχεια, πολλαπλασιάζουμε τα x και y. Δεδομένου ότι η υπορουτίνα του πεδίου Δοκιμής το είχε αρχικοποιήσει με τιμές 2 και 3, το αποτέλεσμα που παίρνουμε είναι 6.
Λοιπόν, ναι, με αυτόν τον τρόπο μπορείτε να χρησιμοποιήσετε τα καθοριστικά πεδίου μεταβλητών στο Excel για να ελέγξετε την ορατότητα των μεταβλητών, των συναρτήσεων και των υπορουτίνων σε έργα Excel VBA.
Προσπάθησα να εξηγήσω τα Specificiers Access του VBA με τον πιο απλό τρόπο που μπορούσα. Ελπίζω να ήταν επεξηγηματικό. Εάν έχετε αμφιβολίες σχετικά με αυτό το άρθρο ή οποιαδήποτε άλλη αμφιβολία σχετικά με το VBA, ρωτήστε με στην παρακάτω ενότητα σχολίων. Θα χαρώ να έρθω εδώ από εσάς.
ByRef και ByVal Arguments | Όταν ένα όρισμα μεταφέρεται ως όρισμα ByRef σε διαφορετική υπο -συνάρτηση, αποστέλλεται η αναφορά της πραγματικής μεταβλητής. Τυχόν αλλαγές που γίνονται στο αντίγραφο της μεταβλητής, θα αντικατοπτρίζονται στο αρχικό όρισμα.
Διαγράψτε φύλλα χωρίς προτροπές επιβεβαίωσης χρησιμοποιώντας VBA στο Microsoft Excel | Δεδομένου ότι διαγράφετε φύλλα χρησιμοποιώντας VBA, γνωρίζετε τι κάνετε. Θα θέλατε να πείτε στο Excel να μην εμφανίζει αυτήν την προειδοποίηση και να διαγράψει το καταραμένο φύλλο.
Προσθήκη και αποθήκευση νέου βιβλίου εργασίας χρησιμοποιώντας το VBA Στο Microsoft Excel 2016 | Σε αυτόν τον κώδικα, δημιουργήσαμε πρώτα μια αναφορά σε ένα αντικείμενο βιβλίου εργασίας. Και στη συνέχεια το αρχικοποιήσαμε με ένα νέο αντικείμενο βιβλίου εργασίας. Το πλεονέκτημα αυτής της προσέγγισης είναι ότι μπορείτε να κάνετε εύκολα λειτουργίες σε αυτό το νέο βιβλίο εργασίας. Όπως αποθήκευση, κλείσιμο, διαγραφή κλπ
Εμφάνιση μηνύματος στη γραμμή κατάστασης του Excel VBA Η γραμμή κατάστασης στο excel μπορεί να χρησιμοποιηθεί ως οθόνη κώδικα. Όταν ο κώδικας VBA είναι μεγάλος και εκτελείτε πολλές εργασίες χρησιμοποιώντας το VBA, συχνά απενεργοποιείτε την ενημέρωση οθόνης, ώστε να μην βλέπετε την οθόνη να τρεμοπαίζει
Απενεργοποίηση προειδοποιητικών μηνυμάτων χρησιμοποιώντας το VBA στο Microsoft Excel 2016 | Αυτός ο κώδικας όχι μόνο απενεργοποιεί τις ειδοποιήσεις VBA αλλά αυξάνει επίσης την αποδοτικότητα χρόνου του κώδικα. Ας δούμε πώς.
Δημοφιλή άρθρα:
50 συντομεύσεις Excel για να αυξήσετε την παραγωγικότητά σας | Γίνετε πιο γρήγοροι στην εργασία σας. Αυτές οι 50 συντομεύσεις θα σας κάνουν να εργάζεστε ακόμη πιο γρήγορα στο Excel.
Η συνάρτηση VLOOKUP στο Excel | Αυτή είναι μια από τις πιο δημοφιλείς και δημοφιλείς λειτουργίες του excel που χρησιμοποιείται για την αναζήτηση τιμών από διαφορετικά εύρη και φύλλα.
COUNTIF στο Excel 2016 | Μετρήστε τιμές με συνθήκες χρησιμοποιώντας αυτήν την εκπληκτική συνάρτηση. Δεν χρειάζεται να φιλτράρετε τα δεδομένα σας για να μετρήσετε συγκεκριμένη τιμή. Η λειτουργία Countif είναι απαραίτητη για την προετοιμασία του ταμπλό σας.
Πώς να χρησιμοποιήσετε τη συνάρτηση SUMIF στο Excel | Αυτή είναι μια άλλη βασική λειτουργία του ταμπλό. Αυτό σας βοηθά να συνοψίσετε τιμές υπό συγκεκριμένες συνθήκες.