Αυτό το σεμινάριο θα εξηγήσει τον τρόπο δημιουργίας λειτουργιών που καθορίζονται από το χρήστη στο VBA.
Το VBA αποτελείται από υποδιαδικασίες και διαδικασίες λειτουργιών. Οι διαδικασίες συνάρτησης επιστρέφουν μια τιμή και μπορούν να κληθούν από τις διαδικασίες δευτερεύοντος, ή μπορούν να χρησιμοποιηθούν στο φύλλο Excel, όπου η τιμή που παράγει η συνάρτηση επιστρέφεται στο φύλλο του Excel. Το Excel φυσικά έχει μια σειρά από ενσωματωμένες συναρτήσεις - όπως η συνάρτηση αθροίσματος ή η συνάρτηση If. Οι διαδικασίες συνάρτησης που γράφετε σε VBA χρησιμοποιούνται με παρόμοιο τρόπο με την ενσωματωμένη λειτουργία και είναι γνωστές ως λειτουργίες καθορισμένες από το χρήστη (UDF).
Γιατί να δημιουργήσετε ένα UDF;
Λείπει η απαιτούμενη συνάρτηση
Ένας από τους κύριους λόγους για τους οποίους θέλετε να δημιουργήσετε ένα UDF στο Excel είναι ότι δεν υπάρχει μια υπάρχουσα ενσωματωμένη λειτουργία που θα κάνει την εργασία για εσάς. Η σύνταξη της δικής σας λειτουργίας στο VBA είναι συνήθως ο πιο αποτελεσματικός τρόπος επίλυσης του προβλήματος. Η παρακάτω συνάρτηση θα μετατρέψει μια τιμή από χιλιόγραμμα σε λίβρες όπου χρησιμοποιείται μια μεταβλητή παράμετρος (dblKilo) για να ληφθεί η τιμή των κιλών για τον υπολογισμό.
Αντικατάσταση υπο-ρουτίνας (μακροεντολή)
Θα μπορούσατε να γράψετε μια δευτερεύουσα διαδικασία (μακροεντολή) για να λύσετε την εργασία για εσάς - αλλά οι δευτερεύουσες διαδικασίες δεν επιστρέφουν μια τιμή και δεν είναι δυναμικές - με άλλα λόγια, εάν οι τιμές στο φύλλο εργασίας σας αλλάξουν, θα πρέπει να εκτελέσετε ξανά το μακροεντολή προκειμένου οι υπολογισμοί στη μακροεντολή να ενημερώσουν τα δεδομένα σας. Η παρακάτω διαδικασία θα μετατρέψει επίσης τα κιλά μας σε λίρες, αλλά κάθε φορά που τα δεδομένα αλλάζουν στο Α1, θα πρέπει να εκτελέσετε ξανά τη μακροεντολή για να ενημερώσετε το αποτέλεσμα.
Αντικαταστήστε έναν τύπο
Μπορεί να έχετε έναν πολύ περίπλοκο τύπο στο Excel τον οποίο πρέπει να χρησιμοποιείτε επαναλαμβανόμενα - η τοποθέτηση του τύπου σε κώδικα VBA διευκολύνει την ανάγνωση και την κατανόηση - καθώς και ίσως την αφαίρεση περιθωρίου για σφάλματα χρήστη κατά την πληκτρολόγηση του τύπου.
Δημιουργία UDF
Για να δημιουργήσετε ένα UDF, προσθέστε πρώτα μια λειτουργική μονάδα είτε στο βιβλίο εργασίας του Excel, είτε, εάν έχετε ένα βιβλίο εργασίας προσωπικής μακροεντολής, μπορείτε είτε να χρησιμοποιήσετε μια υπάρχουσα μονάδα εκεί ή να προσθέσετε μια νέα. Για να το κάνετε αυτό, πρέπει να βρίσκεστε στο Visual Basic Editor (VBE). Για να μεταβείτε στο VBE, πατήστε ALT + F11 ή κάντε κλικ στην επιλογή Visual Basic στην καρτέλα Προγραμματιστής της κορδέλας σας.
ΥΠΟΔΕΙΞΗ: Εάν δεν έχετε ενεργοποιήσει την καρτέλα Προγραμματιστής στην κορδέλα σας, μεταβείτε στο Αρχείο, Επιλογές και κάντε κλικ στο Προσαρμογή κορδέλαςΤο Βεβαιωθείτε ότι είναι επιλεγμένο το πλαίσιο ελέγχου Προγραμματιστής και κάντε κλικ στο OK.
Για να εισαγάγετε μια νέα ενότητα, επιλέξτε το έργο VBA στο οποίο θέλετε να εισαγάγετε τη μονάδα (είτε το έργο VBA για το τρέχον βιβλίο στο οποίο εργάζεστε είτε το προσωπικό βιβλίο μακροεντολών), κάντε κλικ στο Εισάγετε Μενού και κάντε κλικ στο Μονάδα μέτρησης
Αφού δημιουργήσετε τη μονάδα σας, μπορείτε να αρχίσετε να δημιουργείτε το UDF σας.
Όλα τα UDF ξεκινούν με τη λειτουργία και στη συνέχεια το όνομα του UDF. Οι συναρτήσεις μπορούν να είναι ιδιωτικές ή δημόσιες, αλλά συνήθως θα θέλατε ένα UDF να είναι δημόσιο προκειμένου να εμφανίζονται στο παράθυρο διαλόγου Εισαγωγή συνάρτησης στο Excel (ανατρέξτε στη χρήση μιας συνάρτησης από ένα φύλλο Excel παρακάτω παρακάτω σε αυτό το άρθρο). Εάν δεν βάλετε τη λέξη -κλειδί Private μπροστά από τη συνάρτηση, τότε η συνάρτηση είναι αυτόματα δημόσια.
123 | Συνάρτηση TestFunction1 (intA As Integer) Ως ακέραιοςTestFunction1 = intA * 7Λειτουργία Τέλους |
Η παραπάνω συνάρτηση έχει ένα μόνο όρισμα (intA). Μπορείτε να δημιουργήσετε μια συνάρτηση με πολλά ορίσματα
123 | Συνάρτηση TestFunction2 (intA ως ακέραιος, intB ως ακέραιος, intC ως ακέραιος) ως ακέραιοςTestFunction2 = (intA * intB) + intCΛειτουργία Τέλους |
Μπορείτε επίσης να δημιουργήσετε μια συνάρτηση με προαιρετικά ορίσματα. Εάν το όρισμα παραλειφθεί, μπορείτε να ορίσετε μια προεπιλεγμένη τιμή για το όρισμα στη συνάρτηση.
123 | Συνάρτηση TestFunction3 (intA ως ακέραιος, intB ως ακέραιος, προαιρετικός intC ως ακέραιος = 10) ως ακέραιοςTestFunction3 = (intA * intB) + intCΛειτουργία Τέλους |
Χρήση μιας συνάρτησης μέσα από ένα φύλλο Excel
Οι λειτουργίες που έχετε δημιουργήσει θα εμφανίζονται από προεπιλογή στη λίστα λειτουργιών σας στην ενότητα Ορισμός χρήστη της λίστας λειτουργιών.
Κάνε κλικ στο fx για να εμφανιστεί το παράθυρο διαλόγου Εισαγωγή συνάρτησης.
Επιλέγω Ορισμένο από τον χρήστη από τη λίστα κατηγοριών
Επιλέξτε τη λειτουργία που θέλετε από τη διαθέσιμη Λειτουργίες καθορισμένες από το χρήστη.
Εναλλακτικά, όταν ξεκινάτε να γράφετε τη συνάρτηση σας στο Excel, η συνάρτηση θα εμφανίζεται στην αναπτυσσόμενη λίστα συναρτήσεων.
Αποθήκευση των λειτουργιών με το αρχείο Excel
Καθώς οι λειτουργίες είναι γραμμένες σε κώδικα VBA, είναι λογικό ότι ο κώδικας πρέπει να είναι διαθέσιμος στο βιβλίο εργασίας για να είναι διαθέσιμος για χρήση στο φύλλο Excel. Μπορείτε είτε να αποθηκεύσετε τις λειτουργίες σας στο βιβλίο εργασίας στο οποίο τις χρησιμοποιείτε είτε να τις αποθηκεύσετε στο προσωπικό σας βιβλίο μακροεντολής εργασίας. Το προσωπικό σας βιβλίο μακροεντολής εργασίας είναι ένα κρυφό αρχείο που είναι διαθέσιμο όποτε είναι ανοιχτό το Excel και επομένως είναι διαθέσιμο για χρήση σε οποιοδήποτε βιβλίο εργασίας στο Excel. Συνήθως δημιουργείται όταν εγγράφετε μια μακροεντολή και επιλέγετε την επιλογή για αποθήκευση της μακροεντολής στο Προσωπικό βιβλίο εργασίας μακροεντολών.
Εάν θέλετε να διατηρήσετε τις λειτουργίες σας αποθηκευμένες στο βιβλίο εργασίας στο οποίο εργάζεστε, θα πρέπει να βεβαιωθείτε ότι όταν αποθηκεύετε το βιβλίο εργασίας, αποθηκεύεται ως "Βιβλίο εργασίας με δυνατότητα μακροεντολής«Ή ένα xlsm αρχείο.