Το Excel VBA παρέχει πολλές ενσωματωμένες λειτουργίες. Ορισμένες από αυτές τις συναρτήσεις VBA του Excel λαμβάνουν ορίσματα και ορισμένες όχι.
Παραδείγματα συναρτήσεων Excel VBA
Εδώ, θα βρείτε μερικά παραδείγματα χρήσης συναρτήσεων VBA σε κώδικα. Σε πολλά από αυτά τα παραδείγματα, η συνάρτηση MsgBox εμφανίζει μια τιμή σε ένα πλαίσιο μηνύματος. Ναι, το MsgBox είναι μια συνάρτηση VBA — μάλλον ασυνήθιστη, αλλά συνάρτηση παρ' όλα αυτά. Αυτή η χρήσιμη συνάρτηση εμφανίζει ένα μήνυμα σε ένα παράθυρο διαλόγου και επίσης επιστρέφει μια τιμή.
Εμφάνιση της ημερομηνίας ή της ώρας του συστήματος
Το πρώτο παράδειγμα χρησιμοποιεί τη συνάρτηση Date της VBA για να εμφανίσει την τρέχουσα ημερομηνία συστήματος σε ένα πλαίσιο μηνύματος:
Sub ShowDate()
MsgBox "Σήμερα είναι: " & Ημερομηνία
End Sub
Σημειώστε ότι η συνάρτηση Ημερομηνία δεν χρησιμοποιεί όρισμα. Σε αντίθεση με τις συναρτήσεις φύλλου εργασίας, μια συνάρτηση VBA χωρίς όρισμα δεν απαιτεί κενό σύνολο παρενθέσεων. Στην πραγματικότητα, εάν πληκτρολογήσετε ένα κενό σύνολο παρενθέσεων, το VBE τις αφαιρεί αμέσως.
Για να λάβετε την ώρα του συστήματος, χρησιμοποιήστε τη συνάρτηση Time. Και αν τα θέλετε όλα, χρησιμοποιήστε τη συνάρτηση Τώρα για να επιστρέψετε και την ημερομηνία και την ώρα.
Εύρεση μήκους συμβολοσειράς
Η ακόλουθη διαδικασία χρησιμοποιεί τη συνάρτηση VBA Len, η οποία επιστρέφει το μήκος μιας συμβολοσειράς κειμένου. Η συνάρτηση Len παίρνει ένα όρισμα: τη συμβολοσειρά. Όταν εκτελείτε αυτήν τη διαδικασία, το πλαίσιο μηνύματος εμφανίζει το όνομά σας και τον αριθμό των χαρακτήρων στο όνομά σας.
Sub GetLength()
Dim MyName As String
Αχνό μήκος χορδής
MyName = Application.UserName
StringLength = Len(MyName)
Το MsgBox MyName & " έχει " & StringLength & " χαρακτήρες."
End Sub
Υπολογισμός του μήκους του ονόματός σας.
Το Excel διαθέτει επίσης μια συνάρτηση LEN, την οποία μπορείτε να χρησιμοποιήσετε στους τύπους των φύλλων εργασίας σας. Η έκδοση του Excel και η συνάρτηση VBA λειτουργούν το ίδιο.
Εμφανίζεται το όνομα ενός μήνα
Η ακόλουθη διαδικασία χρησιμοποιεί τη συνάρτηση MonthName, η οποία επιστρέφει το όνομα ενός μήνα. Το MonthName χρησιμοποιεί ένα όρισμα: έναν ακέραιο μεταξύ 1 και 12.
Sub ShowMonthName()
Εξαφανίστε αυτό το μήνα
Αυτός Μήνας = Μήνας(Ημερομηνία)
MsgBox MonthName (αυτόν τον μήνα)
End Sub
Αυτή η διαδικασία χρησιμοποιεί τη συνάρτηση Μήνας για να πάρει τον τρέχοντα μήνα (ως τιμή) και αυτή η τιμή εκχωρείται στη μεταβλητή ThisMonth. Στη συνέχεια, η συνάρτηση MonthName μετατρέπει την τιμή σε κείμενο. Επομένως, εάν εκτελέσετε αυτήν τη διαδικασία τον Απρίλιο, το πλαίσιο μηνύματος εμφανίζει το κείμενο Απρίλιος.
Στην πραγματικότητα, η μεταβλητή ThisMonth δεν απαιτείται. Μπορείτε να έχετε το ίδιο αποτέλεσμα με αυτήν την έκφραση, η οποία χρησιμοποιεί τρεις συναρτήσεις VBA:
MonthName(Month(Date))
Εδώ, η τρέχουσα ημερομηνία μεταβιβάζεται ως όρισμα στη συνάρτηση Month, η οποία επιστρέφει μια τιμή που μεταβιβάζεται ως όρισμα στη συνάρτηση MonthName.
Προσδιορισμός μεγέθους αρχείου
Η ακόλουθη διαδικασία Sub εμφανίζει το μέγεθος, σε byte, του εκτελέσιμου αρχείου του Excel. Βρίσκει αυτήν την τιμή χρησιμοποιώντας τη συνάρτηση FileLen:
Sub GetFileSize()
Dim TheFile As String
TheFile = "C:\Program Files (x86)\Microsoft Office\root\Office16\EXCEL.EXE"
MsgBox FileLen(TheFile)
End Sub
Σημειώστε ότι αυτή η ρουτίνα κωδικοποιεί σκληρά το όνομα αρχείου (δηλαδή, δηλώνει ρητά τη διαδρομή). Αυτό δεν είναι καλή ιδέα. Το αρχείο μπορεί να μην βρίσκεται στη μονάδα δίσκου C ή ο φάκελος Excel μπορεί να έχει διαφορετικό όνομα. Η ακόλουθη δήλωση δείχνει μια καλύτερη προσέγγιση:
TheFile = Application.Path & "\EXCEL.EXE"
Η διαδρομή είναι μια ιδιότητα του αντικειμένου εφαρμογής. Απλώς επιστρέφει το όνομα του φακέλου στον οποίο είναι εγκατεστημένη η εφαρμογή (δηλαδή το Excel) (χωρίς πίσω κάθετο).
Προσδιορισμός του τύπου ενός επιλεγμένου αντικειμένου
Η ακόλουθη διαδικασία χρησιμοποιεί τη συνάρτηση TypeName, η οποία επιστρέφει τον τύπο της επιλογής στο φύλλο εργασίας (ως συμβολοσειρά):
Sub ShowSelectionType()
Dim SelType As String
SelType = TypeName(Επιλογή)
MsgBox SelType
End Sub
Η επιλογή μπορεί να είναι ένα εύρος, μια εικόνα, ένα ορθογώνιο, μια περιοχή γραφήματος ή οποιοσδήποτε άλλος τύπος αντικειμένου που μπορεί να επιλεγεί.
Η συνάρτηση TypeName είναι πολύ ευέλικτη. Μπορείτε επίσης να χρησιμοποιήσετε αυτήν τη συνάρτηση για να προσδιορίσετε τον τύπο δεδομένων μιας μεταβλητής.
Συναρτήσεις VBA του Excel που κάνουν περισσότερα από το να επιστρέφουν μια τιμή
Μερικές λειτουργίες VBA ξεπερνούν και πέρα από το call of duty. Αντί να επιστρέφουν απλώς μια τιμή, αυτές οι λειτουργίες έχουν μερικές χρήσιμες παρενέργειες.
Λειτουργίες VBA με χρήσιμα πλευρικά πλεονεκτήματα
Λειτουργία |
Τι κάνει |
MsgBox |
Εμφανίζει ένα εύχρηστο πλαίσιο διαλόγου που περιέχει ένα μήνυμα και κουμπιά. Η συνάρτηση επιστρέφει έναν κωδικό που προσδιορίζει σε ποιο κουμπί κάνει κλικ ο χρήστης. |
Πλαίσιο εισόδου |
Εμφανίζει ένα απλό παράθυρο διαλόγου που ζητά από τον χρήστη κάποια στοιχεία. Η συνάρτηση επιστρέφει ό,τι εισάγει ο χρήστης στο παράθυρο διαλόγου. |
Κέλυφος |
Εκτελεί άλλο πρόγραμμα. Η συνάρτηση επιστρέφει το αναγνωριστικό εργασίας (ένα μοναδικό αναγνωριστικό) του άλλου προγράμματος (ή ένα σφάλμα εάν η συνάρτηση δεν μπορεί να ξεκινήσει το άλλο πρόγραμμα). |
Ανακαλύπτοντας τις λειτουργίες του Excel VBA
Πώς μπορείτε να μάθετε ποιες λειτουργίες παρέχει η VBA; Καλή ερώτηση. Η καλύτερη πηγή είναι το σύστημα Excel VBA . Ένας άλλος τρόπος είναι να πληκτρολογήσετε VBA , ακολουθούμενο από μια τελεία. Λαμβάνετε μια λίστα με αντικείμενα. Αυτά με πράσινο εικονίδιο είναι συναρτήσεις. Εάν αυτή η δυνατότητα δεν λειτουργεί, επιλέξτε Εργαλεία VBE → Επιλογές, κάντε κλικ στην καρτέλα Επεξεργαστής και τοποθετήστε μια επιλογή δίπλα στην επιλογή Αυτόματη λίστα μελών.
Ένας τρόπος εμφάνισης μιας λίστας συναρτήσεων VBA.
Υπάρχουν περισσότερες από 140 διαφορετικές λειτουργίες διαθέσιμες στο VBA. Μερικά είναι τόσο εξειδικευμένα και σκοτεινά, που δεν θα τα χρειαστείτε ποτέ. Άλλα, ωστόσο, είναι αρκετά χρήσιμα για πολλές εφαρμογές.
Οι πιο χρήσιμες ενσωματωμένες λειτουργίες του Excel VBA
Λειτουργία |
Τι κάνει |
Abs |
Επιστρέφει την απόλυτη τιμή ενός αριθμού |
Πίνακας |
Επιστρέφει μια παραλλαγή που περιέχει έναν πίνακα |
Επιλέγω |
Επιστρέφει μια τιμή από μια λίστα στοιχείων |
Ο Χρ |
Μετατρέπει μια τιμή ANSI σε συμβολοσειρά |
CurDir |
Επιστρέφει την τρέχουσα διαδρομή |
Ημερομηνία |
Επιστρέφει την τρέχουσα ημερομηνία συστήματος |
ΗμερομηνίαΠροσθήκη |
Επιστρέφει μια ημερομηνία στην οποία έχει προστεθεί ένα καθορισμένο χρονικό διάστημα — για παράδειγμα, ένας μήνας από μια συγκεκριμένη ημερομηνία |
DateDiff |
Επιστρέφει έναν ακέραιο που δείχνει τον αριθμό των καθορισμένων χρονικών διαστημάτων μεταξύ δύο ημερομηνιών — για παράδειγμα, τον αριθμό των μηνών από τώρα μέχρι τα γενέθλιά σας |
DatePart |
Επιστρέφει έναν ακέραιο που περιέχει το καθορισμένο μέρος μιας δεδομένης ημερομηνίας — για παράδειγμα, την ημέρα μιας ημερομηνίας του έτους |
ΗμερομηνίαΣειρά |
Μετατρέπει μια ημερομηνία σε αύξοντα αριθμό |
DateValue |
Μετατρέπει μια συμβολοσειρά σε ημερομηνία |
Ημέρα |
Επιστρέφει την ημέρα του μήνα από μια τιμή ημερομηνίας |
Σκην |
Επιστρέφει το όνομα ενός αρχείου ή καταλόγου που ταιριάζει με ένα μοτίβο |
Πλανώμαι |
Επιστρέφει τον αριθμό σφάλματος μιας συνθήκης σφάλματος |
Λάθος |
Επιστρέφει το μήνυμα σφάλματος που αντιστοιχεί σε έναν αριθμό σφάλματος |
Exp |
Επιστρέφει τη βάση του φυσικού λογάριθμου (e) σε ισχύ |
FileLen |
Επιστρέφει τον αριθμό των byte σε ένα αρχείο |
Διορθώσετε |
Επιστρέφει το ακέραιο τμήμα ενός αριθμού |
Μορφή |
Εμφανίζει μια έκφραση σε μια συγκεκριμένη μορφή |
GetSetting |
Επιστρέφει μια τιμή από το μητρώο των Windows |
Ωρα |
Επιστρέφει το τμήμα ώρας του χρόνου |
Πλαίσιο εισόδου |
Εμφανίζει ένα πλαίσιο για να ζητήσει από έναν χρήστη να εισάγει |
InStr |
Επιστρέφει τη θέση μιας συμβολοσειράς μέσα σε μια άλλη συμβολοσειρά (μετρώντας από την αρχή) |
InStrRev |
Επιστρέφει τη θέση μιας συμβολοσειράς μέσα σε μια άλλη συμβολοσειρά (μετρώντας από το τέλος) |
Int |
Επιστρέφει το ακέραιο τμήμα ενός αριθμού |
IsArray |
Επιστρέφει True εάν μια μεταβλητή είναι πίνακας |
IsDate |
Επιστρέφει True εάν μια έκφραση είναι ημερομηνία |
Είναι άδειο |
Επιστρέφει True εάν μια μεταβλητή δεν έχει αρχικοποιηθεί |
IsError |
Επιστρέφει True εάν μια παράσταση είναι τιμή σφάλματος |
Λείπει |
Επιστρέφει True εάν ένα προαιρετικό όρισμα δεν μεταβιβάστηκε σε μια διαδικασία |
IsNull |
Επιστρέφει True εάν μια παράσταση δεν περιέχει έγκυρα δεδομένα |
Είναι Αριθμητικό |
Επιστρέφει True εάν μια παράσταση μπορεί να αξιολογηθεί ως αριθμός |
LBound |
Επιστρέφει τον μικρότερο δείκτη για μια διάσταση ενός πίνακα |
LCase |
Επιστρέφει μια συμβολοσειρά που έχει μετατραπεί σε πεζά |
Αριστερά |
Επιστρέφει έναν καθορισμένο αριθμό χαρακτήρων από τα αριστερά μιας συμβολοσειράς |
Len |
Επιστρέφει τον αριθμό των χαρακτήρων σε μια συμβολοσειρά |
Στα μέσα |
Επιστρέφει έναν καθορισμένο αριθμό χαρακτήρων από μια συμβολοσειρά |
Λεπτό |
Επιστρέφει το τμήμα λεπτών μιας τιμής χρόνου |
Μήνας |
Επιστρέφει τον μήνα από μια τιμή ημερομηνίας |
MsgBox |
Εμφανίζει ένα πλαίσιο μηνύματος και (προαιρετικά) επιστρέφει μια τιμή |
Τώρα |
Επιστρέφει την τρέχουσα ημερομηνία και ώρα συστήματος |
Αντικαθιστώ |
Αντικαθιστά μια υποσυμβολοσειρά σε μια συμβολοσειρά με μια άλλη υποσυμβολοσειρά |
RGB |
Επιστρέφει μια αριθμητική τιμή RGB που αντιπροσωπεύει ένα χρώμα |
σωστά |
Επιστρέφει έναν καθορισμένο αριθμό χαρακτήρων από τα δεξιά μιας συμβολοσειράς |
Rnd |
Επιστρέφει έναν τυχαίο αριθμό μεταξύ 0 και 1 |
Δεύτερος |
Επιστρέφει το τμήμα δευτερολέπτων μιας τιμής χρόνου |
Κέλυφος |
Εκτελεί ένα εκτελέσιμο πρόγραμμα |
Χώρος |
Επιστρέφει μια συμβολοσειρά με καθορισμένο αριθμό διαστημάτων |
Διαίρεση |
Χωρίζει μια συμβολοσειρά σε μέρη, χρησιμοποιώντας έναν χαρακτήρα οριοθέτησης |
πλ |
Επιστρέφει την τετραγωνική ρίζα ενός αριθμού |
Σειρά |
Επιστρέφει έναν επαναλαμβανόμενο χαρακτήρα ή συμβολοσειρά |
χρόνος |
Επιστρέφει την τρέχουσα ώρα συστήματος |
Μετρών την ώραν |
Επιστρέφει τον αριθμό των δευτερολέπτων από τα μεσάνυχτα |
TimeSerial |
Επιστρέφει την ώρα για μια καθορισμένη ώρα, λεπτό και δευτερόλεπτο |
Χρονική αξία |
Μετατρέπει μια συμβολοσειρά σε χρονοσειριακό αριθμό |
Τακτοποίηση |
Επιστρέφει μια συμβολοσειρά χωρίς προπορευόμενα ή υστερούντα κενά |
ΤύποςΌνομα |
Επιστρέφει μια συμβολοσειρά που περιγράφει τον τύπο δεδομένων μιας μεταβλητής |
UBound |
Επιστρέφει τον μεγαλύτερο διαθέσιμο δείκτη για τη διάσταση ενός πίνακα |
UCase |
Μετατρέπει μια συμβολοσειρά σε κεφαλαία |
Val |
Επιστρέφει τους αριθμούς που περιέχονται σε μια συμβολοσειρά |
Καθημερινή |
Επιστρέφει έναν αριθμό που αντιπροσωπεύει μια ημέρα της εβδομάδας |
Ετος |
Επιστρέφει το έτος από μια τιμή ημερομηνίας |
Για πλήρεις λεπτομέρειες σχετικά με μια συγκεκριμένη συνάρτηση Excel VBA , πληκτρολογήστε το όνομα της συνάρτησης σε μια λειτουργική μονάδα VBA, μετακινήστε τον κέρσορα οπουδήποτε μέσα στο κείμενο και πατήστε F1.