Λειτουργία καθορισμένη από τον χρήστη Excel VBA (UDF)
Η Microsoft μας εξυπηρετεί με πολλές ενσωματωμένες λειτουργίες για να επιταχύνουμε το έργο στο Excel. Ωστόσο, χρησιμοποιώντας την κωδικοποίηση VBA μπορούμε να δημιουργήσουμε τις δικές μας λειτουργίες και αυτές οι λειτουργίες ονομάζονται τεχνικά «Λειτουργίες καθορισμένες από τον χρήστη» (UDF). Ονομάζονται επίσης ως «προσαρμοσμένες λειτουργίες» στο excel VBA.
Οποιοσδήποτε τύπος στον οποίο μπορείτε να έχετε πρόσβαση από το φύλλο εργασίας με ένα κομμάτι κώδικα ονομάζεται UDF. Με απλά λόγια, οποιοσδήποτε τύπος που δεν είναι ενσωματωμένος αλλά διαθέσιμος στο Excel ονομάζεται Λειτουργίες καθορισμένες από το χρήστη.

Πώς να δημιουργήσετε λειτουργίες καθορισμένες από το χρήστη;
Παρόλο που το UDF είναι μέρος της ενότητας μας, δεν αποτελούν μέρος της κανονικής μας Υπορουτίνας στο VBA. Αυτό ονομάζεται Διαδικασία Λειτουργίας στο VBA. Όπως και πώς ξεκινάμε την κωδικοποίηση μακροεντολών με τη λέξη SUB παρόμοια, πρέπει να το ξεκινήσουμε χρησιμοποιώντας τη λέξη «Λειτουργία». Η δευτερεύουσα διαδικασία έχει έναρξη και τέλος, παρόμοια Διαδικασία λειτουργίας με την έναρξη και το τέλος.
Παράδειγμα # 1 - Δημιουργήστε μια απλή συνάρτηση UDF Sum
Θα δημιουργήσουμε τη δική μας συνάρτηση SUM στο excel προσθέτοντας δύο αριθμούς.
- Για να ξεκινήσετε την κωδικοποίηση, ξεκινήστε τη λέξη «Λειτουργία» σε μία από τις ενότητες.

- Όπως και το πώς ονομάζουμε τη μακροεντολή ομοίως, πρέπει να δώσουμε και ένα όνομα στη λειτουργία μας. Αυτό το όνομα χρησιμοποιείται ως όνομα τύπου.

Σε αντίθεση με την υπορουτίνα, δεν μπορούμε απλά να πατήσουμε το enter για να δημιουργήσουμε μια διαδικασία, αλλά πρέπει να αναφέρουμε επιχειρήματα εδώ.
Για παράδειγμα, δείτε την παρακάτω σύνταξη της συνάρτησης φύλλου εργασίας SUM.
Ο αριθμός 1, ο αριθμός 2 είναι ορίσματα της συνάρτησης SUM.
- Ομοίως, πρέπει να αναφέρουμε τα επιχειρήματά μας.

Εδώ έχω δηλώσει τα επιχειρήματα ως "x ως Integer" και "y ως Integer". Δεδομένου ότι προσθέτουμε αριθμητική τιμή, πρέπει να αντιστοιχίσουμε τον τύπο δεδομένων μόνο ως αριθμητικό τύπο δεδομένων.
Αφού δήλωσα τα ορίσματα, έχω εκχωρήσει επίσης τον τύπο επιστροφής του ακέραιου, επειδή το αποτέλεσμα που δίνεται από τη συνάρτηση "OurSum" είναι επίσης μια αριθμητική τιμή.
- Τώρα μέσα στη συνάρτηση, πρέπει να αναφέρουμε τον τύπο που πρόκειται να χρησιμοποιήσουμε. Εδώ πρέπει να χρησιμοποιήσουμε τη λειτουργία για να ξεκινήσουμε.

Αναφέραμε το όνομα τύπου " OurSum " πρέπει να προσθέσει x και y.
- Εντάξει, αποθηκεύστε τον κωδικό και μεταβείτε στο φύλλο εργασίας.

- Έχω εισαγάγει μερικούς αριθμούς εδώ. Ανοίξτε το ίσο σύμβολο και αρχίστε να πληκτρολογείτε OurSum. Μπορείτε να δείτε το όνομα του τύπου να εμφανίζεται εδώ.

- Όπως και πώς επιλέγουμε κελιά, ομοίως επιλέγουμε δύο κελιά ξεχωριστά.

- Αφού επιλέξετε δύο κελιά, πατήστε το πλήκτρο enter για να έχετε αποτελέσματα.

Λειτουργεί λοιπόν ακριβώς το ίδιο με την κανονική μας λειτουργία SUM.
- Εντάξει, τώρα θα αλλάξω τους αριθμούς.

- Και πάλι, θα εφαρμόσω τη λειτουργία που έχουμε δημιουργήσει.

Ω !!! Έχουμε τιμές σφάλματος εκτός από το πρώτο κελί.
Πρέπει να σκεφτείτε γιατί λάθος.
Εάν παρατηρήσετε το κελί A2 και B2, έχουμε τιμές 48170 και 21732. Δεδομένου ότι έχουμε εκχωρήσει τον τύπο δεδομένων ως ακέραιο, δεν μπορεί να έχει αριθμό μεγαλύτερο από 32767. Αυτός είναι ο λόγος που λάβαμε το σφάλμα excel ως #NUM !.
Τώρα θα προσθέσω αριθμούς που είναι μικρότεροι από 32767.

Στην παραπάνω εικόνα, όλοι οι αριθμοί είναι ακέραιοι αριθμοί, δηλαδή λιγότερο από 32767.
Στο πρώτο κελί, έχουμε τα αποτελέσματα. Αλλά στο δεύτερο κελί, δηλαδή στο κελί C2, λάβαμε την τιμή σφάλματος ως #VALUE !.
Παρόλο που και οι δύο αριθμοί είναι μικρότεροι από 32767, έχουμε ακόμα το σφάλμα.
Αυτό συμβαίνει επειδή έχουμε δηλώσει το τελικό αποτέλεσμα και ως ακέραιο.

Έτσι, όταν προσθέτουμε 16000 και 17229, θα λάβουμε μια τιμή όπως το 33229, το οποίο είναι περισσότερο από το ακέραιο όριο τύπου δεδομένων 32767. Άρα το τελικό αποτέλεσμα είναι μια τιμή σφάλματος.
Παράδειγμα # 2 - Δημιουργήστε μια συνάρτηση για τον έλεγχο λογικών τιμών
Θα δημιουργήσουμε μια ακόμη λειτουργία για να δοκιμάσουμε τις λογικές τιμές. Χρειαζόμαστε μια συνάρτηση που επιστρέφει "Καλό" εάν ο αριθμός είναι> = 60 και χρειαζόμαστε το αποτέλεσμα ως "Κακό" εάν ο αριθμός είναι <= 50.
Βήμα 1: Ξεκινήστε τη διαδικασία λειτουργίας και δώστε ένα όνομα στη διαδικασία.

Βήμα 2: Δώστε το όρισμα ως TestScore ως Integer.

Βήμα 3: Το τελικό αποτέλεσμα θα πρέπει να είναι είτε "Καλό" είτε "Κακό", ώστε το αποτέλεσμα να είναι στο String.
Βήμα 4: Πρώτον, πρέπει να ελέγξουμε εάν η βαθμολογία είναι> = 60 ή όχι. Χρησιμοποιήστε συνθήκη IF για δοκιμή.

Βήμα 5: Εάν το σκορ δοκιμής είναι> = 60, χρειαζόμαστε τη συνάρτηση για να επιστρέψουμε το αποτέλεσμα ως "Καλό". Έτσι TestResult = "Καλό".

Βήμα 6: Εάν η βαθμολογία δοκιμής είναι μικρότερη από 60, τότε το αποτέλεσμα της συνάρτησης θα πρέπει να είναι "Κακό".

Εντάξει, τελειώσαμε.
- Αποθηκεύστε τον κωδικό και μεταβείτε στο φύλλο εργασίας.

Έχω εισαγάγει μερικούς αριθμούς εδώ ως βαθμολογία δοκιμής.
- Εφαρμόστε τη λειτουργία που έχουμε δημιουργήσει για να φτάσουμε τα αποτελέσματα.

- Επιλέξτε το κελί και πατήστε enter.

Αυτό είναι το UDF.