Ενσωματωμένες οπτικές μαθηματικές λειτουργίες. Ενσωματωμένα χαρακτηριστικά της Visual Basic. Πληκτρολογήστε Λειτουργίες ελέγχου

Λειτουργία - Αυτός είναι ένας ειδικός τύπος διαδικασίας VBA που επιστρέφει το αποτέλεσμα. Οι προσαρμοσμένες διαδικασίες λειτουργίας, όπως οι ενσωματωμένες λειτουργίες VBA, μπορεί να έχουν προαιρετικά και να ονομαστούν επιχειρήματα. Για να γράψετε διαδικασίες λειτουργίας, δεν μπορείτε να χρησιμοποιήσετε τη μακροεντολή, αν και μπορείτε να επεξεργαστείτε τη μακροεντολή που έχει εγγραφεί από τη συσκευή εγγραφής και να την μετατρέψετε στη λειτουργία της διαδικασίας.

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

Σύνταξη:

Όνομα λειτουργίας ()
"Δηλώσεις VBA
Λειτουργία τερματισμού.

Η λειτουργία είναι μια λέξη-κλειδί που ανακοινώνει την αρχή της λειτουργίας.

Το όνομα είναι το όνομα της λειτουργίας. Τα ονόματα λειτουργιών ακολουθούν τους ίδιους κανόνες με τα ονόματα άλλων αναγνωριστικών VBA.

Arglist - Κατάλογος Επιχειρήσεων αυτής της λειτουργίας, προαιρετικό στοιχείο.

Πληκτρολογήστε - Οποιαδήποτε τιμή λειτουργίας επιστροφής. Εάν ο τύπος δεν έχει οριστεί, το αποτέλεσμα που επιστρέφει τη διαδικασία λειτουργίας έχει έναν τύπο παραλλαγής.

Όνομα \u003d έκφραση - Εκχώρηση μιας συνάρτησης που υποδηλώνει VBA, ποια τιμή πρέπει να επιστρέψει τη λειτουργία, το προαιρετικό στοιχείο. Ωστόσο, θα πρέπει πάντα να συμπεριλάβετε τον χειριστή ανάθεσης στη διαδικασία λειτουργίας.

Λειτουργία τερματισμού - Λέξεις-κλειδιά που τελειώνουν τη λειτουργία.


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

Συνήθως η λειτουργία προορίζεται να εκτελέσει υπολογισμό και να επιστρέψει το αποτέλεσμα. Κατά την κήρυξη μιας διαδικασίας λειτουργίας, υποδεικνύεται το όνομα κάθε μεταδιδόμενου επιχειρήματος. Τα ονόματα των επιχειρήσεων στον κατάλογο διαχωρίζονται από το ένα το άλλο του κόμματος και πρέπει να ακολουθούν τους κανόνες που εφαρμόζονται σε οποιοδήποτε αναγνωριστικό VBA.


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



Χωρίς τη χρήση της λειτουργίας, η λίστα θα μοιάζει με αυτό:



Από αυτό το απλό παράδειγμα, νομίζω ότι η βασική ιδέα της χρήσης λειτουργιών λειτουργίας λειτουργίας είναι σαφής - η βελτίωση της αναγνωσιμότητας του κώδικα προγράμματος και η συντομογραφία (με άλλα λόγια, η διαδικασία λειτουργίας είναι γραμμένη όταν ο ίδιος κωδικός "κομμάτι" είναι περισσότερο από 2-3 φορές στον κωδικό του προγράμματος). Πράγματι, εάν η λειτουργία της διαδικασίας μας απαρτίζεται από μια γραμμή, αλλά ας πούμε, από 10 γραμμές. Και ο κωδικός προγράμματος θα χρησιμοποιήσει αυτή τη διαδικασία λειτουργίας 5 φορές, η συνολική λίστα του προγράμματος θα ήταν μικρότερη από 38 γραμμές.


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

Πριν αρχίσετε να δημιουργείτε τις δικές σας λειτουργίες VBA, είναι χρήσιμο να γνωρίζετε ότι το Excel VBA έχει μια εκτεταμένη συλλογή έτοιμων ενσωματωμένων λειτουργιών που μπορούν να χρησιμοποιηθούν κατά τη σύνταξη κώδικα.

Ο κατάλογος αυτών των λειτουργιών μπορεί να προβληθεί στον επεξεργαστή VBA:

  • Ανοίξτε το βιβλίο του Excel και εκτελέστε τον επεξεργαστή VBA (κάντε κλικ σε αυτό Alt + f11), και στη συνέχεια κάντε κλικ στο F2..
  • Στην αναπτυσσόμενη λίστα στο επάνω αριστερό μέρος της οθόνης, επιλέξτε τη βιβλιοθήκη VBA..
  • Θα εμφανιστεί μια λίστα με ενσωματωμένες κατηγορίες και λειτουργίες VBA. Κάντε κλικ στο όνομα της λειτουργίας έτσι ώστε η σύντομη περιγραφή του να εμφανίζεται στο κάτω μέρος του παραθύρου. Πάτημα F1. Ανοίξτε τη σελίδα online βοήθειας για αυτή τη λειτουργία.

Επιπλέον, η πλήρης λίστα των ενσωματωμένων λειτουργιών VBA με παραδείγματα μπορεί να βρεθεί στον ιστότοπο του Visual Basic Developer Center.

Διαδικασίες χρηστών "λειτουργία" και "sub" στο VBA

Στο Excel Visual Basic, ένα σύνολο εντολών που εκτελεί μια συγκεκριμένη εργασία τοποθετείται στη διαδικασία Λειτουργία. (Λειτουργία) ή Υπο. (Υπορουτίνα). Η κύρια διαφορά μεταξύ των διαδικασιών Λειτουργία. και Υπο. είναι ότι η διαδικασία Λειτουργία. Επιστρέφει το αποτέλεσμα, διαδικασία Υπο. - δεν.

Επομένως, εάν θέλετε να εκτελέσετε ενέργειες και να πάρετε κάποιο αποτέλεσμα (για παράδειγμα, σύνορα αρκετών αριθμών), τότε η διαδικασία χρησιμοποιείται συνήθως Λειτουργία., και για να εκτελέσετε απλά κάποιες ενέργειες (για παράδειγμα, αλλάξτε τη μορφοποίηση της ομάδας των κυττάρων), πρέπει να επιλέξετε τη διαδικασία Υπο..

Επιχειρήματα

Με τη βοήθεια επιχειρημάτων, διάφορα δεδομένα μπορούν να μεταφερθούν στις διαδικασίες VBA. Ο κατάλογος των επιχειρημάτων καθορίζεται κατά την κήρυξη της διαδικασίας. Για παράδειγμα, η διαδικασία Υπο. Στο VBA προσθέτει έναν συγκεκριμένο ακέραιο (ακέραιο) σε κάθε κελί στο ειδικό εύρος. Για τη μεταφορά της διαδικασίας ο αριθμός αυτός είναι δυνατός με τη βοήθεια του επιχειρήματος, όπως αυτή:

Υποτήματα Addtocells (i ως ακέραιος) ... τελικό sub

Λάβετε υπόψη ότι η παρουσία επιχειρημάτων για τις διαδικασίες Λειτουργία. και Υπο. Το VBA είναι προαιρετικό. Για ορισμένες διαδικασίες, δεν απαιτούνται επιχειρήματα.

Προαιρετικά επιχειρήματα

Οι διαδικασίες VBA ενδέχεται να έχουν προαιρετικά επιχειρήματα. Αυτά είναι τα επιχειρήματα που ο χρήστης μπορεί να καθορίσει αν θέλει και αν παραλειφθεί, η διαδικασία χρησιμοποιεί τις προεπιλεγμένες τιμές για αυτούς.

Επιστρέφοντας στο προηγούμενο παράδειγμα για να κάνετε ένα ακέραιο επιχείρημα της λειτουργίας προαιρετικό, πρέπει να ανακοινωθεί έτσι:

Sub addtocells (προαιρετικά i ως integer \u003d 0)

Σε αυτή την περίπτωση, ένα ακέραιο επιχείρημα ΕΓΩ. Η προεπιλογή θα είναι 0.

Τα προαιρετικά επιχειρήματα της διαδικασίας ενδέχεται να είναι αρκετές, όλες οι οποίες απαριθμούνται στο τέλος του καταλόγου επιχειρήσεων.

Μεταφέρετε τα επιχειρήματα με αξία και αναφορά

Τα επιχειρήματα στο VBA μπορούν να μεταφερθούν στη διαδικασία με δύο τρόπους:

  • Byval. - μετάδοση του επιχειρήματος ανά αξία. Αυτό σημαίνει ότι η διαδικασία μεταδίδεται μόνο στην αξία (δηλαδή, αντίγραφο του επιχειρήματος) και, ως εκ τούτου, τυχόν αλλαγές που γίνονται με το επιχείρημα εντός της διαδικασίας θα χαθούν κατά την έξοδο από αυτήν.
  • Byref. - τη μεταφορά του επιχειρήματος με αναφορά. Δηλαδή, η διαδικασία διαβιβάζεται την πραγματική διεύθυνση της τοποθέτησης του επιχειρήματος στη μνήμη. Οποιεσδήποτε αλλαγές που έγιναν με το επιχείρημα εντός της διαδικασίας θα αποθηκευτούν κατά την έξοδο από τη διαδικασία.

Με λέξεις-κλειδιά Byval. ή Byref. Στη δήλωση της διαδικασίας, μπορείτε να ρωτήσετε πώς το επιχείρημα διαβιβάζεται στη διαδικασία. Αυτό εμφανίζεται κάτω από τα παραδείγματα:

Θυμηθείτε ότι τα επιχειρήματα της VBA διαβιβάζονται από προεπιλογή. Με άλλα λόγια, εάν οι λέξεις-κλειδιά δεν χρησιμοποιούνται Byval. ή Byref.Το επιχείρημα θα μεταφερθεί με παραπομπή.

Πριν συνεχίσετε τη μελέτη των διαδικασιών Λειτουργία. και Υπο. Με περισσότερες λεπτομέρειες, θα είναι χρήσιμο να εξετάσουμε τα χαρακτηριστικά αυτών των δύο τύπων διαδικασιών. Τα παρακάτω είναι σύντομα συζητήσεις VBA διαδικασίες. Λειτουργία. και Υπο. Και εμφανίζονται απλά παραδείγματα.

Διαδικασία VBA "λειτουργία"

Ο συντάκτης VBA αναγνωρίζει τη διαδικασία Λειτουργία.

Λειτουργία ... Τελική λειτουργία

Όπως αναφέρθηκε προηγουμένως, η διαδικασία Λειτουργία. Στο VBA (σε αντίθεση με Υπο.) Επιστρέφει την τιμή. Για επιστρεφόμενες τιμές, ισχύουν οι ακόλουθοι κανόνες:

  • Ο τύπος δεδομένων της επιστροφής της τιμής πρέπει να δηλωθεί στην κεφαλίδα της διαδικασίας Λειτουργία..
  • Η μεταβλητή που περιέχει την τιμή επιστροφής πρέπει να ονομάζεται καθώς και τη διαδικασία Λειτουργία.. Αυτή η μεταβλητή δεν χρειάζεται να ανακοινωθεί ξεχωριστά, καθώς υπάρχει πάντοτε ως αναπόσπαστο μέρος της διαδικασίας Λειτουργία..

Αυτό είναι εξαιρετικό που απεικονίζεται στο παρακάτω παράδειγμα.

Παράδειγμα VBA Διαδικασία "Λειτουργία": Εκτελούμε μια μαθηματική λειτουργία με 3 αριθμούς

Παρακάτω είναι ένα παράδειγμα του κωδικού διαδικασίας VBA. Λειτουργία.που λαμβάνει άλλα επιχειρήματα Διπλό. (Αριθμοί με πλωτό σημείο διπλής ακρίβειας). Ως αποτέλεσμα, η διαδικασία επιστρέφει έναν άλλο αριθμό Διπλό.ίση με το άθροισμα των δύο πρώτων επιχειρημάτων μείον το τρίτο επιχείρημα:

Λειτουργία Summinus (DNUM1 ως διπλό, DNUM2 ως διπλό, DNUM3 ως διπλό) ως διπλό summinus \u003d DNUM1 + DNUM2 - DNUM3

Αυτή η πολύ απλή διαδικασία VBA Λειτουργία. Απεικονίζει τον τρόπο με τον οποίο διαβιβάζονται τα δεδομένα στη διαδικασία μέσω επιχειρήματος. Μπορείτε να δείτε ότι ο τύπος των δεδομένων που επέστρεψε η διαδικασία ορίζεται ως Διπλό. (λένε λέξεις γι 'αυτό Ως διπλό. Μετά τον κατάλογο των επιχειρημάτων). Επίσης, αυτό το παράδειγμα δείχνει πώς το αποτέλεσμα της διαδικασίας Λειτουργία. Αποθηκεύτηκε σε μια μεταβλητή με ένα όνομα που συμπίπτει με το όνομα της διαδικασίας.

Κλήση διαδικασιών VBA "λειτουργία"

Εάν η απλή διαδικασία που συζητήθηκε παραπάνω Λειτουργία. Εισάγεται στην ενότητα στον επεξεργαστή Visual Basic, μπορεί να καλείται από άλλες διαδικασίες VBA ή να χρησιμοποιηθεί στη λίστα εργασίας στο βιβλίο Excel.

Κλήση διαδικασιών VBA "λειτουργία" από άλλη διαδικασία

Διαδικασία Λειτουργία. Μπορείτε να καλέσετε από μια άλλη διαδικασία VBA χρησιμοποιώντας μια απλή αναχώρηση αυτής της διαδικασίας μεταβλητή. Το ακόλουθο παράδειγμα παρουσιάζει την έκκληση στη διαδικασία. Summinus.που ορίστηκε παραπάνω.

Κύριο κύριο () TOM TOLD ως διπλό σύνολο \u003d Summinus (5, 4, 3) τέλος

Καλώντας τις διαδικασίες VBA "λειτουργία" από το φύλλο εργασίας

Διαδικασία VBA Λειτουργία. Μπορείτε να καλέσετε από το φύλλο εργασίας του Excel με τον ίδιο τρόπο όπως κάθε άλλη ενσωματωμένη λειτουργία του Excel. Κατά συνέπεια, η διαδικασία που δημιουργήθηκε στο προηγούμενο παράδειγμα Λειτουργία.Summinus. Μπορείτε να καλέσετε, εισάγετε ένα φύλλο εργασίας στο κελί που εκφράζει εδώ:

Summinus (10, 5, 2)

Διαδικασία VBA "Sub"

Ο συντάκτης VBA καταλαβαίνει ότι πριν από μια διαδικασία. Υπο.Όταν πληροί μια ομάδα ομάδων, που συνάπτεται μεταξύ αυτών των χειριστών έναρξης και κλεισίματος:

Sub ... τέλος

Διαδικασία VBA "Sub": Παράδειγμα 1. Ευθυγράμμιση στο κέντρο και αλλάζοντας το μέγεθος της γραμματοσειράς στην ειδική περιοχή των κυττάρων

Εξετάστε ένα παράδειγμα μιας απλής διαδικασίας VBA. Υπο.Ποιον έργο είναι να αλλάξει τη μορφοποίηση της ειδικής σειράς των κυττάρων. Τα κύτταρα εγκαθίστανται στο κέντρο (και κάθετα και οριζόντια) και το μέγεθος γραμματοσειράς αλλάζει στον καθορισμένο χρήστη:

Sub format_cendered_and_sized (προαιρετικό ifontsize ως integer \u003d 10) επιλογή.Horizontalignment \u003d xlCenter sale

Αυτή τη διαδικασία Υπο. Εκτελεί δράσεις, αλλά δεν επιστρέφει το αποτέλεσμα.

Σε αυτό το παράδειγμα, χρησιμοποιείται επίσης ένα προαιρετικό (προαιρετικό) επιχείρημα. ifontsize. Εάν το επιχείρημα ifontsize Δεν μεταφέρθηκε στη διαδικασία Υπο., η προεπιλεγμένη τιμή του λαμβάνεται ίση με 10. Ωστόσο, αν το επιχείρημα ifontsize Μεταδιδόμενη διαδικασία Υπο.Η ειδική σειρά των κελιών θα καθοριστεί μέγεθος γραμματοσειράς που καθορίζεται από τον χρήστη.

Διαδικασία VBA "Sub": Παράδειγμα 2. Ευθυγράμμιση στο κέντρο και εφαρμόζοντας μια τολμηρή γραμματοσειρά στη γραμματοσειρά στο ειδικό εύρος των κυττάρων

Η ακόλουθη διαδικασία είναι παρόμοια με την πρόσφατα εξεταζόμενη, αλλά αυτή τη φορά, αντί να αλλάξει η αλλαγή, η γραμματοσειρά εφαρμόζεται στην επιλεγμένη περιοχή των κυττάρων. Αυτό είναι ένα παράδειγμα της διαδικασίας Υπο.που δεν διαβιβάζονται επιχειρήματα:

Sub format_cendered_and_bold () επιλογή.Horizontalignment \u003d xlCenter sale ).Τομαντικοποίηση \u003d xlcenter επιλογή.font.bold \u003d true end sub

Καλώντας τη διαδικασία "υπο-" στο Excel VBA

Καλέστε τη διαδικασία VBA "SUB" από άλλη διαδικασία

Για να καλέσετε τη διαδικασία VBA Υπο. Από άλλη διαδικασία VBA, πρέπει να γράψετε μια λέξη-κλειδί Κλήση, Όνομα της διαδικασίας Υπο. Και στη συνέχεια σε παρένθεση επιχειρήματα της διαδικασίας. Αυτό εμφανίζεται στο παρακάτω παράδειγμα:

Sub main () call format_centered_and_sized (20) end sub

Εάν η διαδικασία Format_centered_and_sized Έχει περισσότερα από ένα επιχειρήματα, πρέπει να χωριστούν με κόμματα. Σαν αυτό:

Sub main () call format_centered_and_sized (arg1, arg2, ...)

Καλέστε τη διαδικασία VBA "Sub" από το φύλλο εργασίας

Διαδικασία Υπο. Δεν μπορεί να εισαχθεί απευθείας στο κελί του φύλλου του Excel, όπως μπορεί να γίνει με τη διαδικασία Λειτουργία.Επειδή η διαδικασία Υπο. Δεν επιστρέφει μια τιμή. Ωστόσο, οι διαδικασίες Υπο.δεν έχουν επιχειρήματα και δηλώνεται ως Δημόσιο (Όπως θα εμφανίζεται παρακάτω), θα είναι διαθέσιμη για χρήστες του φύλλου εργασίας. Έτσι, αν οι απλές διαδικασίες που συζητήθηκαν παραπάνω Υπο. Εισάγεται στην ενότητα στον επεξεργαστή της Visual Basic, τότε η διαδικασία Format_centered_and_bold. θα είναι διαθέσιμα για χρήση στη λίστα εργασιών του βιβλίου Excel και τη διαδικασία Format_centered_and_sized - Δεν θα είναι διαθέσιμο, καθώς έχει επιχειρήματα.

Εδώ είναι ένας εύκολος τρόπος να τρέξετε (ή να εκτελέσετε) τη διαδικασία Υπο.Διατίθεται από το φύλλο εργασίας:

  • Κάντε κλικ Alt + F8. (Πατήστε το πλήκτρο Alt. και κρατήστε το πατημένο το πλήκτρο, πατήστε το πλήκτρο F8.).
  • Στη λίστα Macros που εμφανίζεται, επιλέξτε εκείνη που θέλετε να εκτελέσετε.
  • Κάντε κλικ Εκτελώ (ΤΡΕΞΙΜΟ)

Για να εκτελέσετε τη διαδικασία Υπο. Γρήγορα και εύκολα, μπορείτε να αντιστοιχίσετε ένα βασικό συνδυασμό για αυτό. Για αυτό:

  • Κάντε κλικ Alt + F8..
  • Στη λίστα Macros που εμφανίζεται, επιλέξτε εκείνη στην οποία θέλετε να αντιστοιχίσετε έναν συνδυασμό κλειδιού.
  • Κάντε κλικ Παράμετροι (Επιλογές) και στο παράθυρο διαλόγου που εμφανίζεται, εισάγετε τον συνδυασμό κλειδιού.
  • Κάντε κλικ Εντάξει Και κλείστε το παράθυρο διαλόγου Μακρο (Μακρο).

Προσοχή: Αντιστοίχιση συντόμευσης πληκτρολογίου για μακροεντολή, βεβαιωθείτε ότι δεν χρησιμοποιείται ως πρότυπο στο Excel (για παράδειγμα, Ctrl + C.). Εάν επιλέξετε έναν υπάρχοντα συνδυασμό κλειδιού, θα επανεκτιμηθεί από τη μακροεντολή και ως εκ τούτου ο χρήστης μπορεί να εκτελέσει την εκτέλεση της μακροοικονομικής τυχαίας.

Πεδίο εφαρμογής διαδικασίας VBA

Στο Μέρος 2 του εν λόγω εκπαιδευτικού, συζητήθηκε το θέμα της περιοχής δράσης των μεταβλητών και των σταθερών και ο ρόλος των λέξεων-κλειδιών Δημόσιο και Ιδιωτικός. Αυτές οι λέξεις-κλειδιά μπορούν επίσης να χρησιμοποιηθούν σε σχέση με τις διαδικασίες VBA:

Θυμηθείτε ότι πριν από την ανακοίνωση διαδικασιών VBA Λειτουργία. ή Υπο. Η λέξη-κλειδί δεν έχει εισαχθεί, τότε η προεπιλεγμένη ιδιότητα έχει οριστεί στη διαδικασία. Δημόσιο (Δηλαδή, θα είναι διαθέσιμο παντού σε αυτό το έργο VBA). Αυτή είναι η διαφορά από τη δήλωση των μεταβλητών που είναι από προεπιλογή Ιδιωτικός.

Πρώιμη παραγωγή από διαδικασίες VBA "λειτουργία" και "sub"

Εάν πρέπει να ολοκληρώσετε την εκτέλεση των διαδικασιών VBA Λειτουργία. ή Υπο.Χωρίς να περιμένουν τους φυσικούς της τελικούς, τότε υπάρχουν χειριστές γι 'αυτό Λειτουργία εξόδου και Έξοδος sub.. Η χρήση αυτών των χειριστών εμφανίζεται παρακάτω στο παράδειγμα μιας απλής διαδικασίας. Λειτουργία.που αναμένεται να λάβει θετικό επιχείρημα για την εκπλήρωση περαιτέρω λειτουργιών. Εάν η διαδικασία δεν μεταδίδεται όχι θετική αξία, τότε δεν μπορούν να εκτελεστούν περαιτέρω λειτουργίες, οπότε ο χρήστης πρέπει να εμφανιστεί ένα μήνυμα σφάλματος και η διαδικασία πρέπει να ολοκληρωθεί αμέσως:

Λειτουργία Vat_Amount (SVAT_RATE ως ενιαίο) ως μόνο VAT_AMOUNT \u003d 0 αν svat_rate<= 0 Then MsgBox "Expected a Positive value of sVAT_Rate but Received " & sVAT_Rate Exit Function End If ... End Function

Σημειώστε ότι πριν ολοκληρώσετε τη διαδικασία Λειτουργία.Vat_amount., στον κωδικό που έχει τοποθετηθεί ενσωματωμένη λειτουργία VBA Msgbox.που δείχνει τα αναδυόμενα παράθυρα του χρήστη με προειδοποίηση.

Πίνακας 6.1. Ενσωματωμένες μαθηματικές λειτουργίες
Λειτουργία Περιγραφή
Abs Απόλυτη τιμή
Θad Arctanens
Cos. Αριθμοί Cosine
Έξοδος Επιστρέφει τον αριθμό Ε (2.718282), που ανεγέρθηκε στον βαθμό λειτουργίας του επιχειρήματος.
Διορθώσετε Επιστρέφει το κλασματικό μέρος του αριθμού και επιστρέφει το σύνολο. Ως αποτέλεσμα, για θετικούς αριθμούς, ο αριθμός είναι μικρότερος από την είσοδο (Fix (2) Return 2), για αρνητική - μεγαλύτερη (Fix (-2,5) Return -2)
Int. Επιστρέφει το κλασματικό μέρος του αριθμού και επιστρέφει το σύνολο. Για θετικό, ο αριθμός είναι λιγότερο εγγεγραμμένος (INT (2.5) θα επιστρέψει 2), για αρνητική - ακριβώς όπως μικρότερη (INT (-2,5) επιστροφή -3).
Κούτσουρο. Επιστρέφει Φυσικός λογάριθμος αριθμοί
Rnd. Επιστρέφει έναν τυχαίο αριθμό μονής τύπου και ο αριθμός αυτός είναι μεταξύ 0 και 1. Για να αρχικοποιηθεί η γεννήτρια τυχαίων αριθμών, χρησιμοποιήστε την οδηγία τυχαιοποίησης - πρέπει να καλείται πριν καλέσει Rnd..
Sgn. Η λειτουργία έχει σχεδιαστεί για να καθορίσει το σημάδι του αριθμού. Εάν ο αριθμός είναι θετικός - επιστρέφει 1. Για μηδέν, η λειτουργία θα επιστρέψει 0 για έναν αρνητικό αριθμό -1.
Αμαρτία. Κόλπος
SQR. Τετραγωνική ρίζα
Ηλιοκαμένος. Εφαπτομένος

Ας εξετάσουμε ένα παράδειγμα. Προσθέστε σε ένα έγγραφο του Microsoft Word, καλέστε το CMD_Calc, το γράφουμε ως υπολογισμοί και προσθέτουμε τον ακόλουθο κώδικα (καταχώρηση 6.1) που απεικονίζει το έργο των εξεταζόμενων λειτουργιών.

Dim DBLBumber ως διπλή "Μεταβλητή που χρησιμοποιήθηκε σε Dim Varresult Υπολογισμοί" Μεταβλητό τύπο παραλλαγής τύπου "VAL (εισόδου (" Εισάγετε τον αριθμό ")))" Υπολογίστε την απόλυτη τιμή του εγγεγραμμένου αριθμού "Καταχωρίστε πρώτα το αποτέλεσμα της Varresult μεταβλητού" Επόμενο - Ανάληψη Ένα υπογεγραμμένο αποτέλεσμα στα "μηνύματα" θα χρησιμοποιήσουμε το σύμβολο "+" για τη σύμπραξη σειράς, σε άλλες περιπτώσεις "θα καλέσουμε τις λειτουργίες άμεσα" στο MSGBOX "E" παρακαλούμε να σημειώσετε ότι μετατρέπουμε "αριθμητικές τιμές στις χορδές χρησιμοποιώντας το Λειτουργία συμβολοσειράς Varresult \u003d ABS (DBLNumber) MSGBOX ("απόλυτη τιμή" + _ Ισχυρίζεται "+ str (Varresult)" Arctangent MsgBox ("Arcthangence" + _ str (DBLNumber) + "ισούται με" + _ str ( Atn (dflbumber))) "msgbox cosine (" cosine "+ _ str (dflbumber) +" ισούται με "+ _ str (cos (cos (dflnumber)))" e στο βαθμό εισαγωγής msgbox ("ο αριθμός Ε στο βαθμό "+ _ St \u200b\u200b(dflnumber) +" ισούται με "+ _ str (exp (dflnumber)))" Fix msgbox ("λειτουργία διασκέδασης Οι πόλεις FIHE για το "+ _ Str (DBLNumber) +" ισούται με "+ _ str (fix (dflnumber)))" int msgbox ("το αποτέλεσμα της λειτουργίας int για" + _ str (dflbumber) + "ισούται με" + _ Str (int (int (dflnumber))) "Φυσικό λογαρίθμο MSGBOX (" φυσικός λογάριθμος "+ _ str (dflnumber) +" ισούται με "+ _ str (log (dblnumber)))" Παίρνουμε μερικούς τυχαίους αριθμούς "πρώτος αριθμός - από 0 σε 1 "δεύτερο - από 0 έως 10." τρίτο - από 25 έως 100 "τέταρτο - ένα σύνολο από 0 έως 34 τυχαίο msgbox (" μια ομάδα τυχαίων αριθμών: "+ _ str (rnd ()) +" " _ Str (rnd () * 10) + "," + _ st (rnd () * 75 + 25) + "," + _ str (int (rnd (rnd () * 34))) "SGN MSGBOX (" SGN Αποτέλεσμα για "+ _ Str (DBLNumber) +" ισούται με "+ _ str (sgn (sgn (dflbumber))" msgbox ("+ _ str (dflnumber) + +" + _ str (SIN (SIN (DBLNumber)) root ("η τετραγωνική ρίζα" + _ str (dflbumber) + "ισούται με" + _ str (sqr (dflnumber))) "εφαπτόμενο msgbox (" εφαπτομένη "+ _ str (dflumber) +" ισούται με "+ _ s Tr (tan (dflbumber))) Καταχώρηση 6.1. Κάντε κλικ στο κουμπί CMD_Calc Button

Σημειώστε τον αλγόριθμο για την απόκτηση ενός τυχαίου αριθμού που βρίσκεται σε μια συγκεκριμένη περιοχή χρησιμοποιώντας τη λειτουργία Rnd.. Ας υποθέσουμε ότι πρέπει να πάρουμε έναν τυχαίο αριθμό από 15 έως 40. Αρχίζουμε, ένας αριθμός από 0 έως 40. Προφανώς, θα χρειαστούμε μια τέτοια πρόκληση γι 'αυτό: Rnd () * 40.

Για να "αυξήσετε" το επίπεδο του μικρότερου τυχαίου αριθμού που επέστρεψε από την έκφραση, σε 15, θα κάνουμε τα εξής.

Πρώτον, υπολογίζουμε τη διαφορά 40 και 15 - θα πετύχουμε 25. Σημαίνει να πάρετε έναν τυχαίο αριθμό από 0 έως 25, μπορείτε να χρησιμοποιήσετε την κλήση Rnd () * 25.

Δεύτερον, προσθέστε στον προκύπτον τυχαίο αριθμό 15. Τώρα η έκφραση για να αποκτήσετε έναν τυχαίο αριθμό από 15 έως 40 μοιάζει με αυτό: Rnd () * 25 + 15.

Ελέγξτε αυτή τη δήλωση στην ορθότητα. Λειτουργία Rnd., όπως γνωρίζετε, επιστρέφει τυχαίους αριθμούς από 0 έως 1. Εάν η λειτουργία επιστρέψει 0 - το αποτέλεσμα του υπολογισμού της έκφρασης θα είναι ίσο με 15 (0 * 25 + 15). Εάν η λειτουργία επιστρέψει 1 - το αποτέλεσμα θα είναι ίσο με 40 (25 * 1 + 15). Ενδιάμεσες τιμές Rnd. Θα δώσουν τους επιθυμητούς τυχαίους αριθμούς μεταξύ 15 και 40.

Πατώντας το πλήκτρο CMD_LEN (καταχώρηση 6.2), θα περιέχει μια λύση στην ακόλουθη εργασία: Να ενημερώσετε τον χρήστη το μήκος του εγγράφου. Προφανώς, για την επίλυση αυτής της εργασίας, θα χρειαστούμε τη λειτουργία LEN.

"Dim str_instr ως γραμμή συμβολοσειράς εισόδου συμβολοσειράς" μεταβλητή για την αποθήκευση μήκους μήκους που βρέθηκε dim lng_strlen ως long str_instr \u003d inportbox ("εισάγετε μια συμβολοσειρά") "υπολογίστε το μήκος του μήκους strlen lng_strlen \u003d len (str_instr) msgbox (" μήκος της εισαγωγής Γραμμή: _ "+ _ str_instr +" _ ισούται με "+ str (lng_strlen) +" σύμβολα ") Καταχώρηση 6.2. Παράδειγμα χρήσης της λειτουργίας LEN

Στο ΣΧ. 6.2. Μπορείτε να δείτε το αποτέλεσμα του υπολογισμού του μήκους της συμβολοσειράς.


Σύκο. 6.2.

Τώρα θα ασχοληθούμε με τη μετατροπή των συμβόλων - Litcase και Ucase λειτουργίες (Listing 6. 3. 3.).

"Μεταβλητή αποθήκευση Dim Str_INPSTR ως σειρά εισόδου συμβολοσειράς" Μεταβλητή για την αποθήκευση αλλαγμένης συμβολοσειράς Dim str_newstr ως string str_instr \u003d είσοδος ("εισάγετε το κείμενο") "στο str_newstr" στο οποίο θα εισαχθεί η συμβολοσειρά "στην οποία όλα τα κεφαλαία γράμματα αντικαθίστανται από τη γραμμή str_newstr \u003d Lcca (str_instr) msgbox ("Αλλαγή συμβολοσειράς:" + str_newstr) "Τώρα στο str_newstr) θα υπάρξει η ίδια συμβολοσειρά" στην οποία όλα τα γράμματα έχουν ξεκινήσει από το str_newstr \u003d ucase (str_instr) msgbox ("αλλαγμένη γραμμή:" + str_newstr) Καταχώρηση 6.3. Παράδειγμα χρήσης λειτουργιών Lcase και Ucase

Στις Queue - Κοπτικοί χαρακτήρες - Mid, Ltrim, Rtrim, Αριστερά, Δεξιά χαρακτηριστικά (Listing 6.4.) Μεταξύ αυτών των λειτουργιών είναι τα πιο ισχυρά μέσα της, μπορείτε να κάνετε πολλά πράγματα.

"Μεταβλητή αποθήκευση Dim Str_INPSTR ως συμβολοσειρά" Μεταβλητή για την αποθήκευση των κομμένων χαρακτήρων Dim str_newstr ως συμβολοσειρά "Ρυθμίστε μια συμβολοσειρά με την οποία θα είναι βολικό για την εργασία Str_INPSTR \u003d" HELLO, ALEXANDER "" "Αδελφικές λειτουργίες αφαίρεσης" όταν αποσύρετε μια συμβολοσειρά πριν από αυτό Ξεκίνησε "και το τελικό σύμβολο" _ "" για να "καλύτερα ορατό" ή τα κενά που λείπουν msgbox ("εργαζόμαστε με μια τέτοια συμβολοσειρά:" + _ "_" + str_instr + "_") "ltrim - Αποτελέσματα της εργασίας "Μεταβλητή και εμφάνιση πληροφοριών στο MsgBox Str_newstr \u003d LTRIM (Str_INPSTR) MSGBOX (" Αποτέλεσμα του LTRIM: "+ _" _ + str_newstr + "_)" RTRIM MSGBOX ("αποτέλεσμα του RTRIM:" + _ "_" + RTRIM (Str_INPSTR) + "_") "TRIM MSGBOX (" Αποτέλεσμα TRIM: "+ _" _ "+ TRIM (Str_INPSTR) +" _ ")" Αριστερά - αποκοπή από τους χαρακτήρες του Str_INPSTR 12 " Από τους αρχικούς χώρους του str_newstr \u003d αριστερά (LTRIM (Strimpstr), 12) MSGBOX ("Οι πρώτοι 12 χαρακτήρες στα αριστερά:" + _ str_newstr) "Δεξιά - Ομοίως, κόψτε 9 χαρακτήρες στα δεξιά str_newstr \u003d δεξιά (rtrim (strimpstr), 9) msgbox (" οι πρώτοι 9 χαρακτήρες προς τα δεξιά: "+ _ str_newstr)" Μεσαία λειτουργία - για να ξεκινήσετε την απόσυρση ενός χαρακτήρα "από το Δεύτερη και δέκατη πέμπτη θέση σε σειρά "Επιδοκιμή καθαρισμού από τους περίσσεια χώρων" στην αρχή και στο τέλος του str_newstr \u003d Msgbox ("ο δεύτερος χαρακτήρας της εισαγόμενης συμβολοσειράς:" + _ str_newstr) str_newstr \u003d Mid (Trim (STR_INPSTR), 15, 1) MSGBOX ("Δεκαπέντε γραμμή που εισάγεται Σύμβολο:" + _ str_newstr) "Τραβήξτε 5 χαρακτήρες, ξεκινώντας από 15 str_newstr \u003d Mid Symbol (Trim (Str_INPSTR), 15, 5) MSGBOX (" Πέντε χαρακτήρες χορδών από την 15η θέση: "+ _ str_newstr) Καταχώρηση 6.4. Παράδειγμα Χρήση χαρακτηριστικών για κοπή χαρακτήρων

Τώρα εξετάστε παραδείγματα λειτουργιών

Λειτουργία. όνομα ([λίστα_ Επιχειρήματα])
[οδηγίες]
[όνομα = έκφραση]
[οδηγίες]
[όνομα = έκφραση]
Λειτουργία τερματισμού.

Η τιμή ανατίθεται πάντοτε στο όνομα της λειτουργίας τουλάχιστον μία φορά και, κατά κανόνα, όταν η λειτουργία έχει ολοκληρώσει την εκτέλεση. Δημιουργία λειτουργίας χρήστη Έναρξη δημιουργώντας μια μονάδα VBA (μπορείτε επίσης να χρησιμοποιήσετε μια υπάρχουσα μονάδα). Καταχωρίστε τη λέξη-κλειδί λειτουργίας, η οποία καθορίζει το όνομα της λειτουργίας και τον κατάλογο των επιχειρημάτων του (εάν υπάρχουν) σε παρένθεση. Μπορείτε επίσης να δηλώσετε την τιμή τύπου δεδομένων που επιστρέφουν μια λειτουργία χρησιμοποιώντας τη λέξη-κλειδί (δεν είναι απαραίτητο να το κάνετε, αλλά συνιστάται). Τοποθετήστε τον κωδικό VBA που εκτελεί τις απαιτούμενες ενέργειες και βεβαιωθείτε ότι η απαραίτητη τιμή έχει αντιστοιχιστεί μια μεταβλητή διαδικασία που αντιστοιχεί στο όνομα της λειτουργίας τουλάχιστον μία φορά στο σώμα της λειτουργίας. Η λειτουργία τελειώνει με τον χειριστή τερματισμού λειτουργίας.

Τα ονόματα των λειτουργιών υπόκεινται στους ίδιους κανόνες όπως. Εάν σκοπεύετε να χρησιμοποιήσετε τη λειτουργία στη φόρμουλα φύλλων εργασίας, βεβαιωθείτε ότι το όνομα δεν έχει τη μορφή κυτταρικής φόρμας. Επίσης, μην αναθέσετε ονόματα που ταιριάζουν με τα ονόματα των ενσωματωμένων λειτουργιών του Excel. Εάν η περιοχή λειτουργίας δεν έχει καθοριστεί, η προεπιλογή είναι το κοινό. Οι λειτουργίες που δηλώθηκαν ως ιδιωτικές δεν εμφανίζονται στο παράθυρο διαλόγου. Master των λειτουργιών.

Η λειτουργία μπορεί να προκληθεί από έναν από τους ακόλουθους τρόπους:

  • να το καλέσετε από άλλη διαδικασία ·
  • Συμπεριλάβετε το στη φόρμουλα του φύλλου εργασίας.
  • περιλαμβάνουν τη μορφή μορφοποίησης υπό όρους ·
  • Καλέστε το στο παράθυρο VBE Debug ( Αμεσος.). Αυτή η μέθοδος εφαρμόζεται συνήθως στο στάδιο δοκιμής (Εικ. 3).

Σύκο. 3. Κλήση μιας λειτουργίας στο παράθυρο εντοπισμού σφαλμάτων

Σε αντίθεση με τις διαδικασίες, οι λειτουργίες δεν εμφανίζονται στο παράθυρο διαλόγου. Μακρο (μενού Προγραμματιστής –> Ο κώδικας –> Μακροεντολή; ή alt + f8).

Επιχειρήματα λειτουργιών

Τα επιχειρήματα μπορεί να είναι μεταβλητά (συμπεριλαμβανομένων των συστοιχιών), σταθερές, συμβολικά δεδομένα ή εκφράσεις. Ορισμένες λειτουργίες δεν έχουν επιχειρήματα. Οι λειτουργίες έχουν τόσο υποχρεωτικά όσο και προαιρετικά επιχειρήματα.

Λειτουργεί χωρίς επιχειρήματα

Το Excel διαθέτει πολλές ενσωματωμένες λειτουργίες που δεν έχουν επιχειρήματα, για παράδειγμα, το Adhesis, σήμερα, TDAT. Είναι εύκολο να δημιουργήσετε παρόμοιες λειτουργίες χρήστη. Για παράδειγμα:

Λειτουργία χρήστη ()
"Επιστρέφει το όνομα χρήστη
Χρήστης \u003d εφαρμογή.Username.
Λειτουργία τερματισμού.

Κατά την είσοδο στον τύπο \u003d χρήστη (), το κύτταρο επιστρέφει το όνομα του τρέχοντος χρήστη (Εικ. 4). Σημείωση: Όταν χρησιμοποιείτε τη λειτουργία χωρίς ένα επιχείρημα στον τύπο του φύλλου εργασίας, πρέπει να καθορίσετε κενές αγκύλες.

Σύκο. 4. Formula \u003d Ο χρήστης () επιστρέφει το όνομα του τρέχοντος χρήστη

Οι προσαρμοσμένες λειτουργίες συμπεριφέρονται όπως τα ενσωματωμένα χαρακτηριστικά του Excel. Συνήθως, η λειτουργία χρήστη υπολογίζεται εκ νέου όταν είναι απαραίτητο, δηλ. Σε περίπτωση αλλαγών σε ένα από τα επιχειρήματα της λειτουργίας. Ωστόσο, μπορείτε να εκτελέσετε τον επανυπολογισμό των λειτουργιών πιο συχνά. Η λειτουργία υπολογίζεται εκ νέου όταν αλλάξει οποιοδήποτε κελί, εάν η διαδικασία προστεθεί από τον χειριστή

Εφαρμογή.Volatile true.

Η μέθοδος Voltile του αντικειμένου της εφαρμογής έχει ένα επιχείρημα (TRUE ή FALSE). Εάν η λειτουργία επισημαίνεται ως Πτητικός. (Μεταβλητή), επανυπολογίζεται κάθε φορά που αλλάζει οποιοδήποτε κύτταρο κυττάρων. Όταν χρησιμοποιείτε το ψευδές όρισμα, η μέθοδος Voltile μεταφράζεται μόνο όταν ένα από τα επιχειρήματά του ποικίλλει ως αποτέλεσμα του επανυπολογισμού.

Το Excel έχει ενσωματωμένη αυτοκόλλητη λειτουργία. Αλλά δεν μου άρεσε πάρα πολύ ότι οι τυχαίοι αριθμοί αλλάζουν κάθε φορά που το φύλλο εργασίας επανυπολογίζεται. Ως εκ τούτου, ανέπτυξα μια συνάρτηση που επιστρέφει τυχαίους αριθμούς που δεν αλλάζουν όταν επανολογούν τους τύπους. Για να το κάνετε αυτό, χρησιμοποιήθηκε το ενσωματωμένο χαρακτηριστικό VBA RND:

Λειτουργία Staticrand ()
"Επιστρέφει έναν τυχαίο αριθμό, όχι μεταβλητό κατά την εκ νέου υπολογισμό των τύπων
Staticrand \u003d rnd ()
Λειτουργία τερματισμού.

Οι τιμές που λαμβάνονται χρησιμοποιώντας αυτόν τον τύπο δεν αλλάζουν ποτέ. Αλλά ο χρήστης παραμένει η πιθανότητα αναγκαστικού επανυπολογισμού του τύπου χρησιμοποιώντας τον συνδυασμό κλειδιού .

Μια λειτουργία ενός επιχειρήματος

Σύκο. 5. Πίνακας της Επιτροπής

Υπάρχουν διάφοροι τρόποι για τον υπολογισμό των προμηθειών. Για παράδειγμα, χρησιμοποιώντας τον ακόλουθο τύπο (εάν ο όγκος πωλήσεων τοποθετείται στο κύτταρο D1):

Εάν (και (και (d1\u003e \u003d 0, d1<=9999,99);D1*0,08;ЕСЛИ(И(D1>\u003d 10.000; D1<=19999,99);D1*0,105; ЕСЛИ(И(D1>\u003d 20000, D1<=39999,99);D1*0,12;ЕСЛИ(D1>\u003d 40000, D1 * 0,14))))

Αυτός ο τύπος είναι ανεπιτυχής για διάφορους λόγους. Πρώτον, είναι δύσκολο, δεν είναι εύκολο να το καλέσετε και στη μελλοντική επεξεργασία. Δεύτερον, οι τιμές καθορίζονται αυστηρά στον τύπο, γι 'αυτό είναι δύσκολο να αλλάξει. Είναι πολύ καλύτερο να χρησιμοποιήσετε το HDP (Εικ. 6).

Σύκο. 6. Χρησιμοποιώντας τη λειτουργία PRD για τον υπολογισμό της Επιτροπής

Ακόμη καλύτερα (τότε δεν χρειάζεται να χρησιμοποιήσετε έναν πίνακα που ταιριάζει) Δημιουργήστε μια προσαρμοσμένη λειτουργία:

ΕΠΙΤΡΟΠΗ ΛΕΙΤΟΥΡΓΙΑΣ (Πωλήσεις)
Const tier1 \u003d 0,08
Const tier2 \u003d 0,105
Const tier3 \u003d 0,12
Const tier4 \u003d 0,14
"Υπολογισμός των προμηθειών από τις πωλήσεις
Επιλέξτε Πωλήσεις περιπτώσεων.
Περίπτωση 0 έως 9999.99: Επιτροπή \u003d πωλήσεις * Tier1
Περίπτωση 10000 έως 19999.99: Επιτροπή \u003d πωλήσεις * Tier2
Περίπτωση 20000 έως 39999.99: Επιτροπή \u003d πωλήσεις * Tier3
Η υπόθεση είναι\u003e \u003d 40000: Επιτροπή \u003d πωλήσεις * Tier4
Επιλέξτε.
Λειτουργία τερματισμού.

Μετά την είσοδο στη μονάδα VBA, αυτή η λειτουργία μπορεί να χρησιμοποιηθεί στον τύπο του φύλλου εργασίας ή να καλέσει από άλλες διαδικασίες VBA. Κατά την είσοδο στον ακόλουθο τύπο, το αποτέλεσμα 3000 θα ληφθεί στο κελί:

Επιτροπή (B2)

Λειτουργία DoubleCell ()
DoubleCell \u003d εύρος ("al") * 2
Λειτουργία τερματισμού.

Αν και αυτό το χαρακτηριστικό λειτουργεί, σε ορισμένες περιπτώσεις δίνει ένα λανθασμένο αποτέλεσμα. Ο λόγος είναι ότι ο υπολογιστικός μηχανισμός του Excel δεν λαμβάνει υπόψη τις κλίμακες που δεν μεταδίδονται ως επιχειρήματα. Ως αποτέλεσμα, μερικές φορές πριν επιστρέψετε τη λειτουργία, όλες οι σχετικές τιμές δεν υπολογίζονται. Θα πρέπει επίσης να γράψετε τη λειτουργία DoubleCell, ως ένα επιχείρημα της οποίας μεταδίδεται η τιμή του κυττάρου Α1.

Λειτουργία DoubleCell (Cell)
DoubleCell \u003d Cell * 2
Λειτουργία τερματισμού.

Λειτουργία με δύο επιχειρήματα

Φανταστείτε ότι ο διαχειριστής που ασχολείται με τα παραπάνω εισάγει μια νέα πολιτική που αποσκοπεί στη μείωση της ροής του προσωπικού: το συνολικό ποσό της καταβολής της Επιτροπής αυξάνεται κατά 1% ετησίως, ο οποίος εργάστηκε στην Εταιρεία. Αλλάξτε την Επιτροπή Λειτουργίας Χρήστη, ώστε να χρειαστούν δύο επιχειρήματα. Το νέο επιχείρημα αντιπροσωπεύει τον αριθμό των ετών που εργάστηκαν από τον υπάλληλο στην εταιρεία. Ας καλέσουμε αυτή τη νέα λειτουργία της Επιτροπής2:

ΕΠΙΤΡΟΠΗ ΛΕΙΤΟΥΡΓΙΑΣ2 (Πωλήσεις, έτη) ως ενιαία
"Υπολογισμός της Επιτροπής Πωλήσεων με βάση
"Το μήκος της εμπειρίας
ΕΠΙΤΡΟΠΗ2 \u003d Επιτροπή (πωλήσεις) + _
(Επιτροπή (πωλήσεις) * έτη / 100)
Λειτουργία τερματισμού.

Λειτουργία με το επιχείρημα με τη μορφή πίνακα

Ως επιχειρήματα, η λειτουργία μπορεί να λάβει μία ή περισσότερες συστοιχίες, να επεξεργαστεί αυτή τη συστοιχία (πίνακες) και να επιστρέψει τη μόνη τιμή. Η λειτουργία που παρουσιάζεται παρακάτω δέχεται έναν πίνακα ως ένα επιχείρημα και επιστρέφει το ποσό των στοιχείων του.

Λειτουργία smuarray (λίστα) ως διπλό
Dim στοιχείο ως παραλλαγή
Smuarray \u003d 0.
Για κάθε στοιχείο στη λίστα
Εάν το φύλλο εργασίας nuturefunction.isnumber (στοιχείο) τότε _
SUMARRAY \u003d SUMARRAY + Στοιχείο
Επόμενο στοιχείο.
Λειτουργία τερματισμού.

Η λειτουργία Excel Endixer ελέγχει αν κάθε στοιχείο είναι ένας αριθμός πριν την προσθήκη σε κοινό ακέραιο αριθμό. Προσθέτοντας αυτόν τον απλό χειριστή επαλήθευσης δεδομένων εξαλείφει τους τύπους ασυνεπειών τύπου όταν προσπαθεί να εκτελέσει μια αριθμητική λειτουργία πάνω από τη συμβολοσειρά.

Λειτουργία με προαιρετικά επιχειρήματα

Πολλές ενσωματωμένες λειτουργίες του Excel έχουν προαιρετικά επιχειρήματα. Παράδειγμα - Λειτουργία LevSMB που επιστρέφει χαρακτήρες από την αριστερή άκρη της γραμμής. Έχει την ακόλουθη σύνταξη:

Levsimv ( Κείμενο, count_simvolov)

Το πρώτο επιχείρημα είναι υποχρεωτικό, σε αντίθεση με το δεύτερο. Εάν το δεύτερο όρισμα δεν έχει καθοριστεί, το Excel προτείνει την τιμή 1.

Οι προσαρμοσμένες λειτουργίες που αναπτύχθηκαν στο VBA μπορούν επίσης να έχουν προαιρετικά επιχειρήματα. Προαιρετικό όρισμα Θα καθορίσετε εάν εισάγετε τη λέξη-κλειδί προαιρετική κατά το όνομα του όρου. Στον κατάλογο των επιχειρημάτων, τα προαιρετικά επιχειρήματα καθορίζονται μετά από όλα τα υποχρεωτικά. Για παράδειγμα:

Λειτουργία χρήστη2 (προαιρετική κεφαλαία ως παραλλαγή)
Αν είναι ismissing (κεφαλαία) τότε κεφαλαία \u003d false
User2 \u003d εφαρμογή.Username.
Εάν uppycase τότε user2 \u003d ucase (user2)
Λειτουργία τερματισμού.

Εάν το επιχείρημα είναι ψευδές ή παραλειφθεί, το όνομα χρήστη επιστρέφεται χωρίς αλλαγές. Εάν το επιχείρημα είναι αληθές, το όνομα χρήστη επιστρέφεται στα κεφαλαία σύμβολα (χρησιμοποιώντας τη λειτουργία UCASE VBA). Δώστε προσοχή στον πρώτο χειριστή λειτουργίας - περιέχει τη λειτουργία VBA ISMISSING, η οποία καθορίζει την παρουσία ενός επιχειρήματος. Εάν το επιχείρημα λείπει, ο χειριστής εκχωρεί την κεφαλαία μεταβλητή σε ψευδή (προεπιλογή).

Λειτουργία VBA Επιστρέφοντας έναν πίνακα

Το VBA περιέχει μια πολύ χρήσιμη λειτουργία με τίτλο πίνακα. Επιστρέφει μια τιμή με έναν τύπο παραλλαγής δεδομένων, το οποίο περιέχει έναν πίνακα (δηλ. Αρκετές τιμές). Εάν δεν είστε εξοικειωμένοι με τις φόρμουλες των συστοιχιών στο Excel, προτείνω να ξεκινήσω με. Ο τύπος ορεινού ορίου εισάγεται στο κύτταρο μετά το πάτημα . Το Excel προσθέτει ένα βραχίονα γύρω από τον τύπο για να υποδείξει ότι αυτός είναι ένας τύπος συστοιχίας.

Το χαρακτηριστικό Monthnames είναι ένα απλό παράδειγμα εφαρμογής της λειτουργίας συστοιχίας στη λειτουργία χρήστη.

Λειτουργία μηνυμάτων ()
Monthnames \u003d Array ("Ιανουάριος", "Φεβρουάριος", "Μάρτιος", _
"Απρίλιος", "Μάιος", "Ιούνιος", "Ιούλιος", "Αύγουστος", _
" Σεπτέμβριος Οκτώβριος Νοέμβριος Δεκέμβριος "
Λειτουργία τερματισμού.

Το χαρακτηριστικό του Monthnames επιστρέφει μια οριζόντια σειρά ονόματος μηνών. Στο φύλλο εργασίας, επιλέξτε 12 κελιά, εισάγετε τον τύπο \u003d monthnames () και πατήστε . Εάν πρέπει να δημιουργήσετε μια κάθετη σειρά ονομάτων των μηνών, επισημάνετε την κατακόρυφη περιοχή, εισάγετε τον τύπο \u003d tracc (monthnames ()) και πατήστε .

Λειτουργία που επιστρέφει την τιμή σφάλματος

  • xLERRDIVO (για σφάλμα # Business / 0!);
  • xlerrna (για σφάλμα # n / d);
  • xLERRNAME (για σφάλμα # Όνομα;);
  • xlerrnull (emfed # άδειο!);
  • xlerrnum (για σφάλμα # αριθμός!);
  • xLERRREF (για σφάλμα # Αναφορά!);
  • xlerrvalue (για σφάλμα # σημαίνει!).

Παρακάτω είναι το μετατρεπόμενο χαρακτηριστικό αφαίρεσης (βλέπε παράδειγμα στην αρχή). Ο σχεδιασμός αν-δέκα χρησιμοποιείται για την εκτέλεση εναλλακτικής δράσης στην περίπτωση που το όρισμα δεν είναι κείμενο. Αυτή η λειτουργία καλεί μια λειτουργία Excel Etext που καθορίζει αν το επιχείρημα περιέχει το κείμενο. Εάν το κελί περιέχει κείμενο, τότε η λειτουργία επιστρέφει ένα κανονικό αποτέλεσμα. Εάν το κελί δεν περιέχει κείμενο (ή άδειο), τότε η λειτουργία επιστρέφει ένα σφάλμα # σημαίνει!

Λειτουργία αφαίρεσης3 (txt) ως παραλλαγή
"Διαγράφει όλα τα φωνητικά γράμματα από το επιχείρημα TXT
"Επιστρέφει ένα σφάλμα # σημαίνει!, Αν το επιχείρημα δεν είναι συμβολοσειρά
Dim i όσο καιρό
Rawevowels3 \u003d ""
Εάν η εφαρμογή.WorkSheetFunction.ISTEXT (txt) τότε
Για i \u003d 1 στο Len (TXT)
Αν όχι ucase (τα μέσα (txt, i, 1)) όπως "" τότε
AbualVowels3 \u003d AbualVowels3 & Mid (TXT, I, 1)
Τέλος εαν
Επόμενο Ι.
ΑΛΛΟΥ.
Αφαιρέστε3 \u003d cverr (xlerrvalue)
Τέλος εαν
Λειτουργία τερματισμού.

Παρακαλείστε να σημειώσετε ότι ο τύπος δεδομένων έχει αλλάξει για την τιμή που επιστρέφεται από τη λειτουργία. Δεδομένου ότι η λειτουργία μπορεί να επιστρέψει κάτι άλλο, εκτός από τη συμβολοσειρά, ο τύπος δεδομένων έχει αλλάξει στην παραλλαγή.

Λειτουργία με αόριστο αριθμό επιχειρήματος

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

Λειτουργία Simplesum (Paramarray Arglist () ως παραλλαγή) ως διπλό
Dim cell ως εύρος
Dim Arg ως παραλλαγή
Για κάθε ARG στον Arglist
Για κάθε κύτταρο στο Arg
Simplesum \u003d Simplesum + Cell
Επόμενο κελί.
Επόμενο arg
Λειτουργία τερματισμού.

Λειτουργίες εντοπισμού σφαλμάτων

Όταν χρησιμοποιείτε τον τύπο στο φύλλο εργασίας για να ελέγξετε τις λειτουργίες που εμφανίζονται κατά την εκτέλεση του σφάλματος, δεν εμφανίζονται στο οικείο παράθυρο διαλόγου μηνυμάτων. Ο τύπος επιστρέφει απλά την τιμή σφάλματος (# μέση!). Ευτυχώς, αυτό δεν αντιπροσωπεύει ένα μεγάλο πρόβλημα κατά τις λειτουργίες εντοπισμού σφαλμάτων, αφού υπάρχουν πάντα αρκετές διαδρομές παράκαμψης.

  • Τοποθετήστε τη λειτουργία MSGBOX σε σημαντικά μέρη για να παρακολουθήσετε τις τιμές των μεμονωμένων μεταβλητών.
  • Δοκιμάστε τη λειτουργία καλώντας το από τη διαδικασία και όχι στη φόρμουλα φύλλων εργασίας. Τα σφάλματα στη διαδικασία εκτέλεσης εμφανίζονται με τον συνήθη τρόπο.
  • Προσδιορίστε το σημείο διακοπής στη λειτουργία και προβάλετε τη λειτουργία βήμα προς βήμα. Σε αυτή την περίπτωση, μπορείτε να χρησιμοποιήσετε όλα τα τυπικά εργαλεία εντοπισμού σφαλμάτων. Για να προσθέσετε ένα σημείο διακοπής, τοποθετήστε το δρομέα στον χειριστή στον οποίο αποφασίζετε να κάνετε παύση της εκτέλεσης και επιλέξτε την εντολή Debug. –> Εναλλαγή σημείου διακοπής. (Καταγραφή –> Σημείο διακοπής) ή κάντε κλικ στο .
  • Χρησιμοποιήστε έναν ή πολλαπλούς προσωρινούς χειριστές εκτύπωσης στο πρόγραμμα για να εμφανίσετε τιμές στο παράθυρο. Αμεσος. Επεξεργαστής VBA. Για παράδειγμα, για να παρακολουθήσετε την κυκλικά μεταβλητή τιμή, χρησιμοποιήστε την ακόλουθη μέθοδο:

Σύκο. 7. Χρησιμοποιήστε το παράθυρο εντοπισμού σφαλμάτων για να εμφανίσετε τα αποτελέσματα κατά την εκτέλεση μιας λειτουργίας.

Σε αυτή την περίπτωση, οι τιμές των δύο μεταβλητών, CH και i εμφανίζονται στο παράθυρο Debug ( Αμεσος.) Κάθε φορά που ο χειριστής debug.print βρίσκεται στο πρόγραμμα. Σταθείτε στον δρομέα σε οποιαδήποτε διαδικασία δοκιμής () και πατήστε F5. Στο ΣΧ. Το 7 δείχνει το αποτέλεσμα για την περίπτωση που η λειτουργία δέχεται το επιχείρημα Tusconarizona.

Χρησιμοποιώντας τη μέθοδο Macrooptions

Μπορείτε να χρησιμοποιήσετε τη μέθοδο Macrooptions του αντικειμένου εφαρμογής, το οποίο σας επιτρέπει να ενεργοποιήσετε τις λειτουργίες των ενσωματωμένων λειτουργιών του Excel. Αυτή η μέθοδος σας επιτρέπει:

  • Προσθήκη περιγραφής λειτουργίας (ξεκινώντας από το Excel 2010;
  • Καθορίστε την κατηγορία λειτουργιών.
  • Προσθέστε μια περιγραφή των επιχειρημάτων της λειτουργίας.

Υπερατότητα ()
Dim funcname ως συμβολοσειρά
Dim funcdesc ως συμβολοσειρά
Dim funccat ως μακρύ
Dim arg1desc ως συμβολοσειρά, arg2desc ως συμβολοσειρά
Funcname \u003d "κλήρωση"
Funcdesc \u003d "Τα περιεχόμενα ενός τυχαίου εύρους"
Funccat \u003d 5 "Σύνδεσμοι και συστοιχίες
Arg1desc \u003d "εύρος που περιέχει τιμές"
Arg2desc \u003d "(προαιρετικό) εάν ψευδείς ή απουσιάζει, _
Η λειτουργία RND δεν υπολογίζεται εκ νέου. "
Arg2desc \u003d arg2desc & "Εάν είναι αλήθεια, η λειτουργία RND επανυπολογίζεται"
Arg2desc \u003d arg2desc & "με οποιαδήποτε αλλαγή σε ένα φύλλο."
Εφαρμογή.macrooptions _
Macro: \u003d funcname, _
Περιγραφή: \u003d Funcdesc, _
Κατηγορία: \u003d Funccat, _
ΑΡΜΑΤΙΚΕΣΠεριγραφές: \u003d Array (Arg1Desc, Arg2Desc)
Τελικά υπομ.

Στο ΣΧ. 8 Εμφανίζει τα παράθυρα διαλόγου Master των λειτουργιών και Λειτουργία επιχειρήσεωνΜετά την εκτέλεση της διαδικασίας περιγράμματος ().

Σύκο. 8. Τύπος πλαισίων διαλόγου Master των λειτουργιών και Λειτουργία επιχειρήσεων Για τη λειτουργία του χρήστη

Η διαδικασία περιήγησης () θα πρέπει να καλείται μόνο μία φορά. Μετά την κλήση του, οι πληροφορίες που σχετίζονται με τη λειτουργία αποθηκεύονται στο βιβλίο εργασίας. Αλλά αν έχετε τροποποιήσει τη διαδικασία, επαναλάβετε την κλήση του.

Εάν δεν καθορίσετε την κατηγορία των χαρακτηριστικών χρησιμοποιώντας τη μέθοδο Macrooptions, η λειτουργία χρήστη του χρήστη θα εμφανιστεί στην κατηγορία Ορισμένο από τον χρήστη κουτί διαλόγου Master των λειτουργιών. Ο πίνακας (Εικ. 9) Καταγράφει τους αριθμούς κατηγοριών που μπορούν να χρησιμοποιηθούν ως τιμές όρων κατηγορίας της μεθόδου Macrooptions. Σημειώστε ότι ορισμένες από αυτές τις κατηγορίες (από 10 έως 13) συνήθως δεν εμφανίζονται στο παράθυρο διαλόγου. Master των λειτουργιών. Εάν μπορείτε να αποδίδετε μία από τις λειτουργίες του χρήστη σε μια παρόμοια κατηγορία, θα εμφανιστεί στο παράθυρο διαλόγου.

Χρησιμοποιώντας πρόσθετα για την αποθήκευση λειτουργιών χρήστη

Εάν επιθυμείτε, μπορείτε να αποθηκεύσετε τις λειτουργίες χρήστη που χρησιμοποιούνται συχνά στο αρχείο πρόσθετων. Το κύριο πλεονέκτημα αυτής της προσέγγισης έχει ως εξής: Οι λειτουργίες μπορούν να εφαρμοστούν σε τύπους χωρίς τον προδιαγραφέα ονόματος αρχείου. Ας υποθέσουμε ότι έχετε μια λειτουργία λειτουργίας χρήστη zapspaces. Αποθηκεύεται στο αρχείο myfuncs.xlsm. Για να το εφαρμόσετε στον τύπο άλλου βιβλίου εργασίας (εκτός από myfuncs.xlsm), πρέπει να εισαγάγετε τον ακόλουθο τύπο: \u003d myfuncs.xlsm! Zapspaces (A1: C12).

Εάν δημιουργήσετε ένα πρόσθετο με βάση το αρχείο myfuncs.xlsm και αυτό το πρόσθετο θα φορτωθεί στην τρέχουσα περίοδο λειτουργίας του Excel, ο σύνδεσμος προς το αρχείο μπορεί να παραλειφθεί εισάγοντας τον ακόλουθο τύπο: \u003d zapspaces (A1: C12) . Η δημιουργία συμπληρωμάτων θα εξεταστεί ξεχωριστά.

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

Χρησιμοποιώντας τις λειτουργίες API των Windows

Το VBA μπορεί να δανειστεί μεθόδους από άλλα αρχεία που δεν έχουν καμία σχέση με το Excel ή VBA, για παράδειγμα, αρχεία DLL (δυναμική βιβλιοθήκη συνδέσεων - δυναμικά συνδεδεμένη βιβλιοθήκη) που χρησιμοποιούνται από τα Windows και άλλα προγράμματα. Ως αποτέλεσμα, η VBA φαίνεται ότι η δυνατότητα εκτέλεσης λειτουργιών που χωρίς δανεισμένες μεθόδους είναι πέρα \u200b\u200bαπό τα όρια των δυνατοτήτων γλωσσών.

Windows API (Διεπαφή προγραμματισμού εφαρμογών - Πρόγραμμα προγραμματισμού εφαρμογής) είναι ένα σύνολο λειτουργιών που είναι διαθέσιμες στους προγραμματιστές στο περιβάλλον των Windows. Όταν καλέσετε τη λειτουργία των Windows από το VBA, έχετε πρόσβαση στα Windows API. Πολλοί πόροι των Windows που χρησιμοποιούνται από τους προγραμματιστές των Windows μπορούν να ληφθούν από τα αρχεία DLL στα οποία τα προγράμματα και οι λειτουργίες συνδέονται με τη διαδικασία εκτέλεσης του προγράμματος και όχι κατά τη διάρκεια της σύνταξης.

Πριν χρησιμοποιήσετε τη λειτουργία API των Windows, πρέπει να ανακοινωθεί στο επάνω μέρος της μονάδας λογισμικού. Εάν η μονάδα λογισμικού δεν είναι μια τυπική μονάδα VBA (δηλ. Μονάδα για Χρήστης, Σεντόνι ή Αυτό το βιβλίο), η λειτουργία API πρέπει να ανακοινωθεί ως ιδιωτική.

Μια διαφήμιση API AD έχει κάποια δυσκολία - η λειτουργία πρέπει να δηλωθεί όσο το δυνατόν ακριβέστερη. Ένας χειριστής διαφήμισης υποδεικνύει το VBA ως εξής:

  • ποια λειτουργία API χρησιμοποιείτε.
  • Σε ποια βιβλιοθήκη υπάρχει μια λειτουργία API.
  • Επιχειρήματα λειτουργίες API.

Μετά από διαφημίσεις, η λειτουργία API μπορεί να χρησιμοποιηθεί στο πρόγραμμα VBA.

Εξετάστε ένα παράδειγμα μιας λειτουργίας API που εμφανίζει το όνομα του φακέλου των Windows (χρησιμοποιώντας τις τυπικές δηλώσεις VBA, αυτή η εργασία είναι μερικές φορές αδύνατη). Αρχικά, θα δηλώσουμε τη λειτουργία API:

Δηλώστε τη λειτουργία ptrsafe getwindowsdirectorya lib "kernel32" _
(Byval Lpbuffer ως συμβολοσειρά, Byval Nsize όσο καιρό

Αυτή η λειτουργία που έχει δύο επιχειρήματα επιστρέφει το όνομα του φακέλου στο οποίο είναι εγκατεστημένο το λειτουργικό σύστημα Windows. Αφού καλέσετε αυτή τη λειτουργία, ο φάκελος των Windows θα αποθηκευτεί στη μεταβλητή LpBuffer και το μήκος του μήκους είναι στη μεταβλητή NSIZE.

Το ακόλουθο παράδειγμα εμφανίζει το αποτέλεσμα στο παράθυρο μηνυμάτων:

Sub showwindowsdir ()
Dim Winpath ως συμβολοσειρά * 255
Dim Windir ως συμβολοσειρά
Winpath \u003d χώρος (255)
Windr \u003d Αριστερά (Winpath, Getwindowsdirectorya _
(Winpath, Len (Winpath)))
MSGBOX WINDRIR, VBINFormation, "Κατάλογος των Windows"
Τελικά υπομ.

Κατά τη διάρκεια της διαδικασίας εκτέλεσης, η διαδικασία Showwindowsdir εμφανίζει το παράθυρο μηνυμάτων με τη θέση του φακέλου των Windows.

Μερικές φορές πρέπει να δημιουργήσετε ένα κέλυφος (περιτύλιγμα) για λειτουργίες API. Με άλλα λόγια, θα δημιουργήσετε τη δική σας λειτουργία χρησιμοποιώντας τη λειτουργία API. Αυτή η προσέγγιση απλοποιεί σημαντικά τη χρήση της λειτουργίας API. Παρακάτω είναι ένα παράδειγμα μιας τέτοιας λειτουργίας VBA:

Λειτουργία WindowsDir () ως συμβολοσειρά
"Όνομα φακέλου των Windows
Dim Winpath ως συμβολοσειρά * 255
Winpath \u003d χώρος (255)
WindowsDir \u003d αριστερά (Winpath, Getwindowsdirectorya _
(Winpath, Len (Winpath)))
Λειτουργία τερματισμού.

Αφού δηλώσετε αυτή τη λειτουργία, μπορείτε να το καλέσετε από άλλη διαδικασία: MSGBOX WindowsDir (). Μπορείτε επίσης να χρησιμοποιήσετε αυτή τη λειτουργία στο Formula Sheet Sheet: \u003d WindowsDir ().

Προσοχή! Μην εκπλαγείτε με την αποτυχία στο σύστημα όταν χρησιμοποιείτε λειτουργίες API των Windows στο VBA. Αποθηκεύστε την εργασία σας πριν από τη δοκιμή.

Προσδιορισμός της κατάστασης του κλειδιού

Ας υποθέσουμε ότι γράψατε μια μακροεντολή VBA που θα πραγματοποιηθεί χρησιμοποιώντας το κουμπί στη γραμμή εργαλείων. Είναι απαραίτητο ότι αυτή η μακροεντολή πραγματοποιείται διαφορετικά, εάν ο χρήστης μετά το κλικ στο κουμπί κρατά το κλειδί . Για να μάθετε για το πλήκτρο Μπορείτε να χρησιμοποιήσετε τη λειτουργία API GetKeystate. Η λειτουργία GetKeystate αναφέρει αν πιέζεται το συγκεκριμένο κλειδί. Η λειτουργία έχει ένα επιχείρημα, το NVirtkey, το οποίο παρουσιάζει τον κώδικα των πλήκτρων που σας ενδιαφέρει.

Παρακάτω είναι ένα πρόγραμμα που αποκαλύπτει ότι όταν εκτελεστεί η διαδικασία του συμβάντος του κουμπιού_Click, το πλήκτρο έχει πατηθεί . Σημειώστε ότι για να προσδιορίσετε την κατάσταση του κλειδιού Χρησιμοποιείται μια σταθερή (λήψη δεκαεξαδικής αξίας), η οποία στη συνέχεια χρησιμοποιείται ως το επιχείρημα της λειτουργίας του getkeystate. Εάν το Getkeystate επιστρέψει μια τιμή μικρότερη από 0, σημαίνει ότι το κλειδί πατημένο. Διαφορετικά κλειδί δεν πιέζεται. Παρόμοιος έλεγχος μπορεί να τοποθετηθεί για τα πλήκτρα CTRL και ALT (Εικ. 10).

Σύκο. 10. Έλεγχος μετατόπισης, Ctrl και Alt

Ο κωδικός λειτουργίας VBA μπορεί να βρεθεί στο συνημμένο αρχείο Excel.

Η συνεργασία με τις λειτουργίες API των Windows μπορεί να είναι αρκετά περίπλοκο. Σε πολλά βιβλία προγραμματισμού, οι διαφημιστές διαφήμισης API παρατίθενται με τα κατάλληλα παραδείγματα. Κατά κανόνα, μπορείτε απλά να αντιγράψετε τις εκφράσεις διαφημίσεων και να χρησιμοποιήσετε τις λειτουργίες, που δεν επιτέθηκαν στην ουσία τους. Οι περισσότεροι προγραμματιστές VBA στο Excel θεωρούν τις λειτουργίες API ως πανάκεια για την επίλυση των περισσότερων εργασιών. Στο Διαδίκτυο θα βρείτε εκατοντάδες αρκετά αξιόπιστα παραδείγματα που μπορούν να αντιγραφούν και να τοποθετηθούν στο δικό σας πρόγραμμα.

Ένα αρχείο κειμένου περιέχει διαφημίσεις και σταθερές του API των Windows. Μπορείτε να ανοίξετε αυτό το αρχείο σε έναν επεξεργαστή κειμένου και να αντιγράψετε τις κατάλληλες διαφημίσεις στη μονάδα VBA.

Σύμφωνα με τα υλικά του βιβλίου. - M: Διαλεκτική, 2013. - Σ. 287-323.

Η λειτουργία που γράφτηκε στο VBA είναι ένας κώδικας που εκτελεί υπολογισμούς και επιστρέφει μια τιμή (ή μια σειρά τιμών). Δημιουργώντας μια λειτουργία, μπορείτε να το χρησιμοποιήσετε με τρεις τρόπους:

  1. Ως τύπος σε ένα φύλλο όπου μπορεί να πάρει επιχειρήματα και να επιστρέψει τιμές.
  2. Ως μέρος της υπορουτίνας VBA. Στη δευτερεύουσα διαδικασία ή σε άλλες λειτουργίες.
  3. Σε κανόνες μορφοποίησης υπό όρους.

Αν και το Excel περιέχει ήδη πάνω από 450 ενσωματωμένες λειτουργίες, αλλά επίσης περιοδικά λείπουν. Μερικές φορές οι ενσωματωμένες λειτουργίες δεν μπορούν να κάνουν ό, τι θέλετε να κάνετε. Μερικές φορές για να επιτευχθεί το αποτέλεσμα, είναι απαραίτητο να δημιουργηθεί μια τεράστια και πολύπλοκη φόρμουλα που δεν είναι κατανοητή για τους άλλους. Σε αυτή την περίπτωση, μπορείτε να δημιουργήσετε μια προσαρμοσμένη λειτουργία που είναι εύκολο να το διαβάσετε και να χρησιμοποιήσετε.

Σημειώστε ότι οι λειτουργίες χρήστη που δημιουργούνται χρησιμοποιώντας VBA είναι συνήθως πολύ πιο αργές από τις ενσωματωμένες λειτουργίες. Κατά συνέπεια, είναι πλέον κατάλληλα για καταστάσεις όταν δεν μπορείτε να πάρετε το αποτέλεσμα χρησιμοποιώντας ενσωματωμένες λειτουργίες ή υπολογισμούς που δεν είναι πολύ και η μείωση της παραγωγικότητας δεν είναι κρίσιμη.

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

Ποια είναι η διαφορά μεταξύ της διαδικασίας (sub) από τη λειτουργία (λειτουργία);

Η κύρια διαφορά είναι ότι η διαδικασία (sub) χρησιμοποιείται για την εκτέλεση ενός συνόλου εντολών και δεν προορίζεται να επιστρέψει την τιμή (ή μια σειρά τιμών), σε αντίθεση με τη λειτουργία (λειτουργία).

Για μια επίδειξη, δίνουμε ένα παράδειγμα. Για παράδειγμα, υπάρχουν ένας αριθμός αριθμών από 1 έως 100 και είναι απαραίτητο να διαχωριστεί ακόμη και από το περίεργο.

Χρησιμοποιώντας τη διαδικασία (δευτερεύουσα), μπορείτε, για παράδειγμα, να περάσετε από τα κελιά και να διαχωρίσετε περίεργο με συμπλήρωση. Και η λειτουργία μπορεί να χρησιμοποιηθεί στην παρακείμενη στήλη και θα επιστρέψει την αλήθεια ή ψέματα ανάλογα με την ακόμη τιμή ή όχι. Εκείνοι. Δεν θα μπορείτε να αλλάξετε το χρώμα της πλήρωσης με τη λειτουργία στο φύλλο.

Δημιουργία μιας απλής λειτουργίας χρήστη στο VBA

Ας δημιουργήσουμε μια απλή λειτουργία χρήστη στο VBA και να δούμε πώς όλα λειτουργούν εκεί.

Το παρακάτω είναι ένας κωδικός λειτουργίας που αφήνει μόνο αριθμούς από το κείμενο, που προκαλεί τις τιμές επιστολών.

Αριθμοί λειτουργίας (κείμενο ως συμβολοσειρά) ως μακρύς αμυδρός, ως μακρύς, δυστυχώς, ως συμβολοσειράς για i \u003d 1 στο len (κείμενο) εάν είναι isnumeric (με τα μέσα (κείμενο, i, 1)) τότε αποτέλεσμα \u003d αποτέλεσμα & μέσα (κείμενο, i, 1 ) Επόμενες μορφές \u003d CLNG (αποτέλεσμα) Τέλος λειτουργίας

Για να το κάνετε όλα τα κέρδη, πρέπει να εισαγάγετε αυτόν τον κώδικα στη μονάδα βιβλίου. Εάν δεν γνωρίζετε πώς να το κάνετε, ξεκινήστε από το άρθρο πώς να καταγράψετε μια μακροεντολή στο Excel.

Τώρα ας δούμε πώς λειτουργεί η λειτουργία, προσπαθήστε να το χρησιμοποιήσετε στο φύλλο:

Πριν από την αποσυναρμολόγηση της ίδιας της λειτουργίας, σημειώνουμε 2 ευχάριστες στιγμές που εμφανίστηκαν μετά τη δημιουργία:

  • Έχει γίνει διαθέσιμο, όπως κάθε άλλη ενσωματωμένη λειτουργία (πώς να δημιουργήσετε μια κρυφή λειτουργία, ας πούμε αργότερα).
  • Όταν εισαγάγατε το σύμβολο "\u003d" και αρχίστε να εισάγετε το όνομα της λειτουργίας, τότε το Excel εμφανίζει όλες τις συμπτώσεις και δείχνει όχι μόνο τις ενσωματωμένες λειτουργίες, αλλά και έθιμο.

Αποσυναρμολογούμε το βήμα προς βήμα

Τώρα ας βάλουμε βαθιά και δείτε πώς δημιουργήθηκε αυτή η λειτουργία. Η λειτουργία από τη γραμμή αρχίζει

Στοιχεία λειτουργίας (ως κείμενο συμβολοσειράς) ως μακρύ

Λέξη Λειτουργία. Μιλά για την έναρξη της λειτουργίας, τότε το όνομά του πηγαίνει, στην περίπτωσή μας Αριθμοί.

  • Το όνομα λειτουργίας δεν μπορεί να περιέχει κενά. Επιπλέον, δεν μπορείτε να καλέσετε τη λειτουργία εάν αντιμετωπίσει το όνομα του συνδέσμου με το κύτταρο. Για παράδειγμα, δεν μπορείτε να ονομάσετε τη λειτουργία ABC123, καθώς αυτό το όνομα αναφέρεται επίσης στο κελί στο φύλλο Excel.
  • Δεν χρειάζεται να αναφέρετε τη λειτουργία σας με το ίδιο όνομα με την υπάρχουσα λειτουργία. Εάν το κάνετε, το Excel θα δώσει προτίμηση στην ενσωματωμένη λειτουργία.
  • Μπορείτε να χρησιμοποιήσετε το σύμβολο έμφασης εάν θέλετε να διαιρέσετε τις λέξεις. Για παράδειγμα, Suma σε cuirsiveείναι ένα επιτρεπτό όνομα.

Μετά το όνομα στις παρενθέσεις, περιγράφονται τα επιχειρήματα λειτουργίας. Με αναλογία με ενσωματωμένα χαρακτηριστικά του Excel. Στην περίπτωσή μας, χρησιμοποιείται το μόνο επιχείρημα. Κείμενο. Μετά το όνομα του επιχειρήματος, υποδεικνύουμε Ως συμβολοσειράΑυτό σημαίνει ότι το επιχείρημά μας είναι μια τιμή κειμένου ή μια αναφορά σε ένα κελί που περιέχει μια τιμή κειμένου. Εάν δεν καθορίσετε τον τύπο δεδομένων, η VBA θα το εξετάσει ως Παραλαγή. (Που σημαίνει ότι μπορείτε να χρησιμοποιήσετε οποιοδήποτε τύπο δεδομένων, το VBA θα το καθορίσει μόνοι σας).

Τελευταίο μέρος της πρώτης γραμμής Οσο. Καθορίζει τον τύπο δεδομένων που επιστρέφει μια λειτουργία. Στην περίπτωσή μας, η λειτουργία θα επιστρέψει τις ακέραιες τιμές. Δεν είναι επίσης απαραίτητο.

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

Dim i ως μακρύ dim αποτέλεσμα ως συμβολοσειρά

Μεταβλητός ΕΓΩ. Θα χρησιμοποιήσουμε για να απαριθμήσουμε χαρακτήρες. Μια μεταβλητή ΑΠΟΤΕΛΕΣΜΑ Για την αποθήκευση του ενδιάμεσου αποτελέσματος της λειτουργίας.

Το καθήκον της λειτουργίας είναι να περάσει από όλα τα σύμβολα του μεταβλητού κειμένου και να αποθηκεύσετε μόνο εκείνους που είναι αριθμοί. Επομένως, ξεκινήστε τον κύκλο από το 1 στο τελευταίο σύμβολο.

Για i \u003d 1 στο Len (κείμενο)

Το LEN είναι μια λειτουργία που ορίζει τον αριθμό των χαρακτήρων.

Η κύρια σειρά της λειτουργίας είναι να ελέγξετε αν το επόμενο σύμβολο κειμένου είναι ο αριθμός και εάν ναι - στη συνέχεια να το αποθηκεύσετε στη μεταβλητή αποτελεσμάτων

Εάν είναι isnumeric (μεσαία (κείμενο, i, 1)) τότε αποτέλεσμα \u003d αποτέλεσμα & μέσα (κείμενο, i, 1)

Για αυτό χρειαζόμαστε μια λειτουργία Ισότιμος- Επιστρέφει Αληθής.Εάν το κείμενο είναι ο αριθμός και Ψευδήςσε διαφορετική περίπτωση.

Λειτουργία ΣΤΑ ΜΕΣΑΠαίρνει κείμενο από το επιχείρημα ΕΓΩ.Σύμβολο (αξία 1 Υποδεικνύει ότι η λειτουργία ΣΤΑ ΜΕΣΑΜόνο 1 σύμβολο) /

Λειτουργία Επόμενο - Κλείστε τον κύκλο Για Όλα είναι σαφή εδώ.

Εικόνες \u003d CLNG (αποτέλεσμα)

Μετατρέπουμε τη μεταβλητή κειμένου σε αυτή τη συμβολοσειρά. ΑΠΟΤΕΛΕΣΜΑπου περιέχει όλες τις μορφές του επιχειρήματος Κείμενο, αριθμητική έννοια. Και λέμε τι είδους αποτέλεσμα θα πρέπει η λειτουργία μας Αριθμοί.

Τελευταία γραμμή κώδικα - Λειτουργία τερματισμού.. Αυτή είναι μια υποχρεωτική γραμμή κώδικα που αναφέρει το VBA ότι ο κωδικός λειτουργίας τελειώνει εδώ.

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