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

Τι είναι μια Συνάρτηση;
Μια συνάρτηση είναι ένα κομμάτι κώδικα που εκτελεί μια συγκεκριμένη εργασία και επιστρέφει ένα αποτέλεσμα. Οι συναρτήσεις χρησιμοποιούνται κυρίως για την εκτέλεση επαναλαμβανόμενων εργασιών όπως η μορφοποίηση δεδομένων για έξοδο, η εκτέλεση υπολογισμών κ.λπ.
Ας υποθέσουμε ότι είστε αναπτυγμένοιping ένα πρόγραμμα που υπολογίζει τους τόκους ενός δανείου. Μπορείτε να δημιουργήσετε μια συνάρτηση που δέχεται το ποσό του δανείου και την περίοδο αποπληρωμής. Η συνάρτηση μπορεί στη συνέχεια να χρησιμοποιήσει το ποσό του δανείου και την περίοδο αποπληρωμής για να υπολογίσει τους τόκους και να επιστρέψει την τιμή.
Γιατί να χρησιμοποιήσετε λειτουργίες
Τα πλεονεκτήματα της χρήσης συναρτήσεων είναι τα ίδια με αυτά που αναφέρονται για τις υπορουτίνες: χωρίζουν ένα μεγάλο πρόγραμμα σε διαχειρίσιμα μέρη, μπορούν να επαναχρησιμοποιηθούν από οπουδήποτε στο έργο και ένα περιγραφικό όνομα τεκμηριώνει τι κάνει ο κώδικας. Εκμάθηση υπορουτίνας VBA του Excel καλύπτει πλήρως αυτά τα οφέλη.
Κανόνες ονοματοδοσίας συναρτήσεων
Οι κανόνες ονομασίας είναι επίσης πανομοιότυποι με εκείνους για τις υπορουτίνες. Ένα όνομα συνάρτησης δεν μπορεί να περιέχει κενό, πρέπει να ξεκινά με γράμμα ή υπογράμμιση και δεν μπορεί να είναι δεσμευμένο. VBA λέξη-κλειδί όπως Συνάρτηση, Ιδιωτική ή Τέλος.
Σύνταξη VBA για δήλωση συνάρτησης
Private Function myFunction (ByVal arg1 As Integer, ByVal arg2 As Integer) myFunction = arg1 + arg2 End Function
ΕΔΩ στη σύνταξη,
| Code | Ενέργειες |
|---|---|
|
|
|
|
|
|
|
|
Πώς να επιστρέψετε μια τιμή και να ορίσετε τον τύπο δεδομένων συνάρτησης
Μια Συνάρτηση έχει μία δουλειά που δεν κάνει μια Υπορουτίνα: επιστρέφει μια τιμή. Δύο λεπτομέρειες ελέγχουν αυτήν την τιμή και και οι δύο είναι εύκολο να τις παραβλέψει κανείς.
Το πρώτο είναι η ανάθεση. Η VBA δεν έχει εντολή Return. Αντίθετα, αντιστοιχίζετε το αποτέλεσμα στο ίδιο το όνομα της συνάρτησης, γι' αυτό και η γραμμή διαβάζεται myFunction = arg1 + arg2Εάν αυτή η ανάθεση δεν εκτελεστεί ποτέ, η συνάρτηση επιστρέφει σιωπηλά μια κενή τιμή αντί να εμφανίζει σφάλμα, επομένως κάθε κλάδος του κώδικα πρέπει να την ορίσει.
Ο δεύτερος είναι ο τύπος επιστροφής. Η παραπάνω δήλωση τελειώνει στην αγκύλη κλεισίματος, επομένως η συνάρτηση επιστρέφει μια Μεταβλητή. Η προσθήκη μιας ρήτρας As μετά τις αγκύλες διορθώνει τον τύπο, ο οποίος είναι ταχύτερος, χρησιμοποιεί λιγότερη μνήμη και επιτρέπει στον μεταγλωττιστή να εντοπίσει μια αναντιστοιχία.
| Δήλωση | Επιστροφές | Πότε να το χρησιμοποιήσετε |
|---|---|---|
| Συνάρτηση f(x όσο διαρκεί) | Παραλλαγή | Μόνο όταν ο τύπος αποτελέσματος διαφέρει πραγματικά |
| Συνάρτηση f(x Όσο διαρκεί) Όσο διαρκεί | Μακριά | Ακέραιοι αριθμοί όπως μετρήσεις και αριθμοί γραμμών |
| Συνάρτηση f(x Όσο) Double | Double | Οποιοσδήποτε υπολογισμός που παράγει δεκαδικούς αριθμούς |
| Συνάρτηση f(x Όσο Μήκος) Ως Σειρά Συμβολοσειράς | Σπάγγος | Μορφοποιημένο κείμενο που επιστράφηκε για εμφάνιση |
| Συνάρτηση f(x) Όσο διαρκεί η λογική τιμή | Boolean | Ένας έλεγχος επικύρωσης που απαντά αληθές ή ψευδές |
💡 Συμβουλές: Χρησιμοποιήστε τη Συνάρτηση Exit για να αποχωρήσετε νωρίς μόλις οριστεί η τιμή επιστροφής, με τον ίδιο τρόπο που η Exit Sub αποχωρεί από μια υπορουτίνα.
Λειτουργία που παρουσιάζεται με Παράδειγμα:
Οι λειτουργίες μοιάζουν πολύ με την υπορουτίνα. Η κύρια διαφορά μεταξύ μιας υπορουτίνας και μιας συνάρτησης είναι ότι η συνάρτηση επιστρέφει μια τιμή όταν καλείται. Ενώ μια υπορουτίνα δεν επιστρέφει μια τιμή, όταν καλείται. Ας υποθέσουμε ότι θέλετε να προσθέσετε δύο αριθμούς. Μπορείτε να δημιουργήσετε μια συνάρτηση που δέχεται δύο αριθμούς και επιστρέφει το άθροισμα των αριθμών.
- Δημιουργήστε τη διεπαφή χρήστη
- Προσθέστε τη συνάρτηση
- Γράψτε τον κώδικα για το κουμπί εντολής
- Ελέγξτε τον κωδικό
Βήμα 1) διεπαφή χρήστη
Προσθέστε ένα κουμπί εντολής στο φύλλο εργασίας όπως φαίνεται παρακάτω
Ορίστε τις ακόλουθες ιδιότητες του CommandButton1 ως εξής.
| S / N | Έλεγχος | Ιδιοκτησία | αξία |
|---|---|---|---|
| 1 | Κουμπί Command1 | Όνομα | btnΠροσθήκηNumbers |
| 2 | Λεζάντα | Πρόσθεση Numbers Λειτουργία |
Η διεπαφή σας θα πρέπει τώρα να εμφανίζεται ως εξής
Βήμα 2) Κωδικός λειτουργίας.
- Πατήστε Alt + F11 για να ανοίξετε το παράθυρο κώδικα
- Προσθέστε τον παρακάτω κώδικα
Private Function addNumbers(ByVal firstNumber As Integer, ByVal secondNumber As Integer) addNumbers = firstNumber + secondNumber End Function
ΕΔΩ στον κωδικό,
| Code | Ενέργειες |
|---|---|
|
|
|
|
|
|
Βήμα 3) Γράψτε Code που καλεί τη συνάρτηση
- Κάντε δεξί κλικ στο btnAddNumbers κουμπί εντολής
- Επιλογή προβολής Code
- Προσθέστε τον παρακάτω κώδικα
Private Sub btnAddNumbers_Click() MsgBox addNumbers(2, 3) End Sub
ΕΔΩ στον κωδικό,
| Code | Ενέργειες |
|---|---|
| «MsgBox προσθέτωNumbers(2,3) " |
|
Βήμα 4) Εκτελέστε το πρόγραμμα, θα έχετε τα ακόλουθα αποτελέσματα
Κατεβάστε το Excel που περιέχει τον παραπάνω κώδικα
Κατεβάστε το παραπάνω αρχείο Excel Code
Το παραπάνω κουμπί καλεί τη συνάρτηση από κώδικα VBA. Μια συνάρτηση μπορεί επίσης να κληθεί από το ίδιο το φύλλο εργασίας, χωρίς κανένα κουμπί.
Πώς να χρησιμοποιήσετε μια συνάρτηση VBA σε ένα κελί φύλλου εργασίας
Μια συνάρτηση γραμμένη σε VBA μπορεί να πληκτρολογηθεί σε ένα κελί ακριβώς όπως η SUM ή η VLOOKUP. Το Excel την ονομάζει συνάρτηση οριζόμενη από τον χρήστη ή UDF και αυτός είναι ο λόγος που πολλοί άνθρωποι μαθαίνουν συναρτήσεις πριν από τις υπορουτίνες. Πρέπει να πληρούνται τρεις προϋποθέσεις.
- Τοποθετήστε το σε μια τυπική ενότητα: Εισαγωγή, Ενότητα στον επεξεργαστή. Μια συνάρτηση που είναι αποθηκευμένη πίσω από ένα φύλλο εργασίας ή στο ThisWorkbook δεν είναι ορατή στη γραμμή τύπων.
- Δηλώστε το δημόσια: Το παραπάνω παράδειγμα χρησιμοποιεί την επιλογή Ιδιωτικό, η οποία την αποκρύπτει από το Excel. Η προεπιλεγμένη ρύθμιση είναι το Δημόσιο, επομένως αρκεί απλώς να καταργήσετε τη λέξη-κλειδί.
- Επιστρέψτε μια τιμή, μην αλλάξετε τίποτα: Ένα UDF δεν μπορεί να μορφοποιήσει κελιά, να διαγράψει γραμμές ή να γράψει σε άλλο κελί. Το Excel αποκλείει αυτές τις ενέργειες και το κελί εμφανίζει την τιμή #VALUE!.
Η παρακάτω συνάρτηση μετατρέπει μια θερμοκρασία και μπορεί να χρησιμοποιηθεί οπουδήποτε στο φύλλο.
Public Function CelsiusToF(ByVal Celsius As Double) As Double CelsiusToF = (Celsius * 9 / 5) + 32 End Function
Αποθηκεύστε το βιβλίο εργασίας ως αρχείο .xlsm με δυνατότητα μακροεντολών και, στη συνέχεια, πληκτρολογήστε =ΚελσίουΣτοF(A1) σε οποιοδήποτε κελί. Το αποτέλεσμα ενημερώνεται κάθε φορά που αλλάζει το A1 και το όνομα εμφανίζεται στη λίστα αυτόματης συμπλήρωσης τύπου στην κατηγορία Ορισμένο από τον χρήστη. Επειδή το βιβλίο εργασίας περιέχει πλέον μακροεντολές, όποιος το ανοίγει πρέπει να ενεργοποιήσει το περιεχόμενο πριν ο τύπος επιστρέψει μια τιμή αντί για #ΟΝΟΜΑ;.
Συνηθισμένα σφάλματα συνάρτησης VBA και πώς να τα διορθώσετε
Τέσσερα προβλήματα ευθύνονται για τις περισσότερες συναρτήσεις που μεταγλωττίζονται αλλά επιστρέφουν λάθος απάντηση.
- Η συνάρτηση επιστρέφει Empty ή 0: Το αποτέλεσμα δεν αντιστοιχίστηκε ποτέ στο όνομα της συνάρτησης ή ένας κλάδος μιας πρότασης If παραλείπει την αντιστοίχιση. Ορίστε την τιμή επιστροφής σε κάθε διαδρομή.
- #ΟΝΟΜΑ; σε ένα κελί φύλλου εργασίας: Η συνάρτηση είναι Ιδιωτική, βρίσκεται σε μια λειτουργική μονάδα φύλλου αντί για μια τυπική λειτουργική μονάδα ή το βιβλίο εργασίας αποθηκεύτηκε χωρίς ενεργοποιημένες μακροεντολές.
- Υπερχείλιση με ακέραιους αριθμούς: Το παράδειγμα χρησιμοποιεί την συνάρτηση As Integer, η οποία σταματά στο 32,767. Αλλάξτε και τις δύο παραμέτρους και τον τύπο επιστροφής σε Long για οποιαδήποτε πραγματικά δεδομένα.
- Ένα αλλαγμένο επιχείρημα εκπλήσσει τον καλούντα: Η παράλειψη του ByVal κάνει την VBA να μεταβιβάζει την ίδια τη μεταβλητή, επομένως η συνάρτηση μπορεί να αλλάξει την τιμή του καλούντος. Γράψτε το ByVal εκτός αν θέλετε αυτό το αποτέλεσμα.



