Υπορουτίνα Excel VBA: Πώς να καλέσετε το Sub σε VBA με Παράδειγμα
⚡ Έξυπνη Σύνοψη
Η υπορουτίνα VBA του Excel ομαδοποιεί ένα μπλοκ κώδικα που εκτελεί μια εργασία χωρίς να επιστρέφει τιμή. Αυτή η σελίδα καλύπτει τους κανόνες ονομασίας, τη σύνταξη Sub, την κλήση ενός Sub από ένα κουμπί εντολής και τον τρόπο με τον οποίο ένα Sub διαφέρει από μια Συνάρτηση.

Τι είναι μια υπορουτίνα στο VBA;
A Υπορουτίνα σε VBA είναι ένα κομμάτι κώδικα που εκτελεί μια συγκεκριμένη εργασία που περιγράφεται στον κώδικα αλλά δεν επιστρέφει αποτέλεσμα ή τιμή. Οι υπορουτίνες χρησιμοποιούνται για τη διάσπαση μεγάλων κομματιών κώδικα σε μικρά διαχειρίσιμα μέρη. Οι υπορουτίνες μπορούν να ανακληθούν πολλές φορές από οπουδήποτε στο πρόγραμμα.
Ας υποθέσουμε ότι έχετε δημιουργήσει μια διεπαφή χρήστη με πλαίσια κειμένου για την αποδοχή δεδομένων εισόδου χρήστη. Μπορείτε να δημιουργήσετε μια υπορουτίνα που διαγράφει τα περιεχόμενα των πλαισίων κειμένου. Μια υπορουτίνα κλήσεων VBA είναι κατάλληλη σε ένα τέτοιο σενάριο επειδή δεν θέλετε να επιστρέψετε αποτελέσματα.
Γιατί να χρησιμοποιήσετε υπορουτίνες
- Σπάστε τον κώδικα σε μικρό διαχειρίσιμο κώδικα: Ένα μέσο πρόγραμμα υπολογιστή έχει χιλιάδες και χιλιάδες γραμμές πηγαίου κώδικα. Αυτό εισάγει πολυπλοκότητα. Οι υπορουτίνες βοηθούν στην επίλυση αυτού του προβλήματος αναλύοντας το πρόγραμμα σε μικρά διαχειρίσιμα κομμάτια κώδικα.
- Code επαναχρησιμοποίηση. Ας υποθέσουμε ότι έχετε ένα πρόγραμμα που πρέπει να έχει πρόσβαση στη βάση δεδομένων, σχεδόν όλα τα παράθυρα του προγράμματος θα πρέπει να αλληλεπιδρούν με τη βάση δεδομένων. Αντί να γράφετε ξεχωριστό κώδικα για αυτά τα παράθυρα, μπορείτε να δημιουργήσετε μια συνάρτηση που χειρίζεται όλες τις αλληλεπιδράσεις της βάσης δεδομένων. Στη συνέχεια, μπορείτε να το καλέσετε από όποιο παράθυρο θέλετε.
- Οι υπορουτίνες και οι συναρτήσεις είναι αυτοτεκμηριωμένες. Ας υποθέσουμε ότι έχετε μια συνάρτησηcalculateLoanInterest και μια άλλη που λέει connectToDatabase. Βλέποντας απλώς το όνομα της υπορουτίνας/συνάρτησης, ο προγραμματιστής θα μπορεί να πει τι κάνει το πρόγραμμα.
Πριν γράψει ένα, ο μεταγλωττιστής αναμένει ότι το όνομα θα ακολουθεί ένα σύντομο σύνολο κανόνων.
Κανόνες ονομασίας υπορουτίνων και συναρτήσεων
Για να χρησιμοποιήσετε υπορουτίνες και συναρτήσεις, υπάρχουν κανόνες που πρέπει να ακολουθήσετε.
- Το όνομα μιας υπορουτίνας ή μιας συνάρτησης κλήσης VBA δεν μπορεί να περιέχει χώρο
- Ένα όνομα υποκλήσεων Excel VBA ή μια συνάρτηση πρέπει να ξεκινά με ένα γράμμα ή μια υπογράμμιση. Δεν μπορεί να ξεκινά με αριθμό ή ειδικό χαρακτήρα
- Μια υπορουτίνα ή ένα όνομα συνάρτησης δεν μπορεί να είναι λέξη-κλειδί. Μια λέξη-κλειδί είναι μια λέξη που έχει ιδιαίτερη σημασία VBA. Λέξεις όπως Private, Sub, Function και End, κ.λπ. είναι όλες παραδείγματα λέξεων-κλειδιών. Ο μεταγλωττιστής τα χρησιμοποιεί για συγκεκριμένες εργασίες.
Με την επιλογή ενός έγκυρου ονόματος, η ίδια η δήλωση ακολουθεί ένα σταθερό μοτίβο.
Σύνταξη υπορουτίνας VBA
Θα χρειαστεί να ενεργοποιήσετε την καρτέλα Προγραμματιστής στο Excel για να ακολουθήσετε αυτό το παράδειγμα. Εάν δεν γνωρίζετε πώς να ενεργοποιήσετε την καρτέλα Προγραμματιστής, διαβάστε τον οδηγό Στοιχεία ελέγχου VBA στο Excel
ΕΔΩ στη σύνταξη,
Private Sub mySubRoutine(ByVal arg1 As String, ByVal arg2 As String) 'do something End Sub
Επεξήγηση σύνταξης
| Code | Ενέργειες |
|---|---|
|
|
|
|
|
|
Η ακόλουθη υπορουτίνα δέχεται το όνομα και το επώνυμο και τα εμφανίζει σε ένα πλαίσιο μηνύματος.
Τώρα θα προγραμματίσουμε και θα εκτελέσουμε αυτήν την Υποδιαδικασία. Ας το δούμε αυτό.
Πώς να καλέσετε το Sub στο VBA
Ακολουθεί μια διαδικασία βήμα προς βήμα σχετικά με τον τρόπο κλήσης του Sub στο VBA:
- Σχεδιάστε τη διεπαφή χρήστη και ορίστε τις ιδιότητες για τα στοιχεία ελέγχου χρήστη.
- Προσθέστε την υπορουτίνα
- Γράψτε τον κωδικό συμβάντος κλικ για το κουμπί εντολής που καλεί την υπορουτίνα
- Δοκιμάστε την εφαρμογή
Βήμα 1) Διεπαφής χρήστη
Σχεδιάστε τη διεπαφή χρήστη όπως φαίνεται στην παρακάτω εικόνα.
Ορίστε τις ακόλουθες ιδιότητες. Οι ιδιότητες που ορίζουμε:
| S / N | Έλεγχος | Ιδιοκτησία | αξία |
|---|---|---|---|
| 1 | Κουμπί Command1 | Όνομα | btnDisplayFullName |
| 2 | Λεζάντα | Πλήρες όνομα υπορουτίνα |
Η διεπαφή σας θα πρέπει τώρα να φαίνεται ως εξής.
Βήμα 2) Προσθήκη υπορουτίνας
- Πατήστε Alt + F11 για να ανοίξετε το παράθυρο κώδικα
- Προσθέστε την ακόλουθη υπορουτίνα
Private Sub displayFullName(ByVal firstName As String, ByVal lastName As String) MsgBox firstName & " " & lastName End Sub
ΕΔΩ στον κωδικό,
| Code | Δράσεις |
|---|---|
|
|
|
|
|
|
Βήμα 3) Κλήση της υπορουτίνας
Κλήση της υπορουτίνας από το συμβάν κλικ στο κουμπί εντολής.
- Κάντε δεξί κλικ στο κουμπί εντολής όπως φαίνεται στην παρακάτω εικόνα. Επιλέξτε Προβολή Code.
- Θα ανοίξει ο επεξεργαστής κώδικα
Προσθέστε τον ακόλουθο κώδικα στο πρόγραμμα επεξεργασίας κώδικα για το συμβάν κλικ του κουμπιού εντολής btnDisplayFullName.
Private Sub btnDisplayFullName_Click() displayFullName "John", "Doe" End Sub
Το παράθυρο του κωδικού σας θα πρέπει τώρα να έχει ως εξής
Αποθηκεύστε τις αλλαγές και κλείστε το παράθυρο κώδικα.
Βήμα 4) Δοκιμή του κώδικα
Στη γραμμή εργαλείων προγραμματιστή βάλτε τη λειτουργία σχεδίασης 'off'. Οπως φαίνεται παρακάτω.
Βήμα 5) Κάντε κλικ στο κουμπί εντολής «Υπορουτίνα FullName».
Θα λάβετε τα ακόλουθα αποτελέσματα
Ένα κουμπί είναι βολικό, αλλά δεν είναι ο μόνος τρόπος για να ξεκινήσετε μια Υπορουτίνα και κατά την ανάπτυξη σπάνια είναι ο ταχύτερος.
Πώς να εκτελέσετε μια υπορουτίνα χωρίς κουμπί
Ενώ γράφετε ακόμα κώδικα, η προσθήκη ενός στοιχείου ελέγχου στο φύλλο μόνο και μόνο για να δοκιμάσετε μια υπορουτίνα σπαταλά χρόνο. Η VBA προσφέρει τέσσερις άλλους τρόπους για να εκτελέσετε μία, και ο καθένας ταιριάζει σε διαφορετική στιγμή στον κύκλο ανάπτυξης.
- Πατήστε F5 στον επεξεργαστή: Τοποθετήστε τον κέρσορα οπουδήποτε μέσα στο Sub και πατήστε F5. Εκτελείται αμέσως. Αυτό λειτουργεί μόνο όταν το Sub δεν δέχεται ορίσματα, επειδή η VBA δεν έχει τιμές να δώσει.
- Βήμα προς βήμα με το F8: Η ίδια εκτέλεση, μία γραμμή τη φορά, ώστε να μπορείτε να παρακολουθείτε κάθε αλλαγή μεταβλητής στο παράθυρο "Τοπικά". Χρησιμοποιήστε το όταν ένα αποτέλεσμα είναι λανθασμένο και πρέπει να δείτε πού.
- Χρησιμοποιήστε το παράθυρο διαλόγου Μακροεντολές: Στην καρτέλα Προγραμματιστής, κάντε κλικ στην επιλογή Μακροεντολές, επιλέξτε το όνομα και κάντε κλικ στην επιλογή Εκτέλεση. Σε αυτήν τη λίστα εμφανίζονται μόνο οι Δημόσιες Υποδομές χωρίς ορίσματα, γι' αυτό και μια βοηθητική Υπομονάδα συνήθως δηλώνεται ως Ιδιωτική.
- Καλέστε το από άλλο Sub: Αυτή είναι η μέθοδος που χρησιμοποιείται για οποιοδήποτε Sub που δέχεται ορίσματα και αυτή στην οποία βασίζεται το παραπάνω κουμπί εντολών.
Η τελευταία επιλογή έχει δύο αποδεκτές μορφές. Η σύνταξη του ονόματος ακολουθούμενη από γυμνά ορίσματα λειτουργεί, όπως και η λέξη-κλειδί explicit Call, αλλά ο κανόνας της παρένθεσης διαφέρει μεταξύ τους.
Sub RunTheGreeting() ' Form 1: no Call keyword, no brackets displayFullName "John", "Doe" ' Form 2: Call keyword, brackets required Call displayFullName("Jane", "Roe") End Sub
Και οι δύο γραμμές κάνουν ακριβώς το ίδιο πράγμα. Η ανάμειξη των δύο μορφών, γράφοντας αγκύλες χωρίς τη λέξη-κλειδί Call, είναι η πιο συνηθισμένη αιτία του σφάλματος μεταγλώττισης "Expected: =" όταν ένα Sub δέχεται περισσότερα από ένα όρισμα.
Διαφορά μεταξύ ενός Sub και μιας Συνάρτησης σε VBA
Οι δύο τύποι διαδικασιών στη VBA είναι οι Sub και Function, και οι αρχάριοι συχνά επιλέγουν τον λάθος τύπο. Το αποφασιστικό ερώτημα είναι απλό: χρειάζεται ο κωδικός κλήσης μια τιμή πίσω;
| Χαρακτηριστικό | Σε | Λειτουργία |
|---|---|---|
| Επιστρέφει μια τιμή | Οχι | Ναι, έχει αντιστοιχιστεί στο όνομα της συνάρτησης |
| Δηλώθηκε με | Υπο… Τέλος Υπο | Λειτουργία … Τέλος Λειτουργίας |
| Ονομάζεται ως | Μια δήλωση από μόνη της | Μέρος μιας έκφρασης, για παράδειγμα x = myFunc(2) |
| Μπορεί να χρησιμοποιηθεί σε κελί φύλλου εργασίας | Οχι | Ναι, ως συνάρτηση που ορίζεται από τον χρήστη |
| Τυπική χρήση | Μορφοποίηση φύλλου, διαγραφή δεδομένων εισόδου, εμφάνιση μηνύματος | Υπολογισμός συνόλου, μετατροπή τιμής, αναζήτηση δεδομένων |
Χρησιμοποιήστε ένα Sub όταν ο κώδικας ενεργεί στο βιβλίο εργασίας και ένα Συνάρτηση VBA όταν ο κώδικας παράγει μια απάντηση που καταναλώνει κάτι άλλο.






