Ας υποθέσουμε ότι προσπαθείτε να δημιουργήσετε ένα σύστημα διαχείρισης σχολείου. Εδώ, θα έχετε διαφορετικούς τύπους μεταβλητών, όπως όνομα μαθητή, αριθμό μαθητή, τάξη κλπ. Ένα σχολείο έχει επίσης δασκάλους, οπότε θα υπάρχουν ονόματα δασκάλων, αντικείμενο δασκάλου, τάξεις κλπ. Ομοίως, θα υπάρχουν πολλά άλλα αντικείμενα όπως , βιβλιοθηκονόμος, τάξεις, αρχές κλπ. Τώρα η ύπαρξη διαφορετικών μεταβλητών για κάθε οντότητα στο σχολείο θα είναι ακατάστατη δουλειά. Τι θα λέγατε για τη δημιουργία ενός τύπου δεδομένων μαθητή, δασκάλου, τάξεων κ.λπ. που αποθηκεύει τιμές που σχετίζονται με αυτά. Για αυτό μπορούμε να χρησιμοποιήσουμε καθορισμένους τύπους δεδομένων VBA.
Σε αυτό το άρθρο, θα μάθουμε πώς μπορείτε να δημιουργήσετε τον δικό σας τύπο δεδομένων στο VBA. Αναφέρονται ως UDTs του VBA.
Καθορισμός τύπου δεδομένων καθορισμένου από το χρήστη
Για να ορίσουμε μια δομή ή UDT σε VBA χρησιμοποιούμε μπλοκ Type___End Type. Εδώ είναι η σύνταξη ενός UDT.
Πληκτρολογήστε Tname_Of_Data_Type var1 ως τύπος δεδομένων 'Ο τύπος δεδομένων μπορεί να είναι οτιδήποτε, int, πίνακας ή ακόμη και UDT var2 ως τύπος δεδομένων Var3 () ως τύπος δεδομένων --- VarN () ως τύπος δεδομένων Τελικός τύπος
Για να ορίσουμε έναν προσαρμοσμένο τύπο δεδομένων στο VBA ξεκινάμε με Type Keyword. Στη συνέχεια, γράφουμε το όνομα του προσαρμοσμένου τύπου δεδομένων μας. Είναι συμβατικό να χρησιμοποιείτε το T πριν από το όνομα του τύπου δεδομένων, ώστε να μπορείτε να κάνετε διάκριση μεταξύ των συλλογών vba και των UDT.
Οι τύποι δεδομένων μπορεί να είναι οτιδήποτε. Και Integer, String, Variant, άλλο UDT, Arrays, συλλογές, οτιδήποτε.
Για να χρησιμοποιήσετε το UDT στο πρόγραμμα δηλώστε τη μεταβλητή του όπως κάθε άλλη μεταβλητή.
Sub UseUDT 'Δήλωση μεταβλητής τύπου χρήστη καθορισμένου τύπου Dim myVar1 ως Tname_Of_Data_Type Dim myVar2 ως Tname_Of_Data_Type End Sub
Απλός. Τώρα για να χρησιμοποιήσουμε τις μεταβλητές σε αυτό το UDT χρησιμοποιούμε τελεστή τελείας. Χρησιμοποιήστε το όνομα του τύπου δεδομένων που ακολουθείται από μια τελεία και το όνομα της μεταβλητής μέσα.
Sub UseUDT 'Δήλωση μεταβλητής τύπου χρήστη καθορισμένων δεδομένων Dim myVar1 ως Tname_Of_Data_Type Dim myVar2 ως Tname_Of_Data_Type myVar1.var1 = "Abcd" myVar2.Var2 = "xyvz" End Sub
Αρκετά από τη θεωρία, ας πάμε σε ένα παράδειγμα για να δούμε πώς λειτουργεί.
Δημιουργήστε μια μεταβλητή μαθητή που αποθηκεύει πληροφορίες που σχετίζονται με τον μαθητή
Έχουμε λοιπόν καθήκον να δημιουργήσουμε έναν τύπο δεδομένων καθορισμένου από τον χρήστη που αποθηκεύει πληροφορίες που σχετίζονται με τους μαθητές.
Ένας μαθητής έχει όνομα, επώνυμο, αριθμό ρόλου, ημερομηνία γέννησης, τάξη, τμήμα, θέματα.
Ας το δημιουργήσουμε λοιπόν.
«Δημιουργήθηκε δημόσιος τύπος δεδομένων μαθητή Δημόσιος τύπος μαθητής fName As String» Για Όνομα lName As String «Για Επώνυμο rNo As Integer» Για Αριθμό Ρόλου clss Ως συμβολοσειρά «Για Τμήμα Τάξης Ως Χορδή» Για Όνομα Τμήματος Θέματα () Ως Χορδή » Για Θέματα μαθητών Τελικός τύπος 'Χρησιμοποιήστε αυτόν τον τύπο μαθητή σε υπορουτίνα Sub StudentInfo ()' Δημιουργία και εκκίνηση μεταβλητής τύπου μαθητή Dim student1 As Tstudent student1.fName = "Manish" student1.lName = "Singh" student1.rNo = 12334 student1.clss = 10 student1.section = "A" ReDim student1.subjects (2) student1.subjects (0) = "physics" student1.subjects (1) = "Math" 'Εκτύπωση στοιχείων μαθητή. Debug.Print (student1.fName) Debug.Print (student1.lName) Debug.Print (student1.rNo) Debug.Print (student1.clss) Debug.Print (student1.section) Debug.Print (student1.subjects (0) ) Debug.Print (student1.subjects (1)) End Sub
Όταν εκτελέσετε το παραπάνω υπο θα εκτυπώσει το αποτέλεσμα όπως φαίνεται παρακάτω:
Manish
Σινγκ 12334 10 ΕΝΑ η φυσικη Μαθηματικά |
Δημιουργία συστοιχίας UDT και πρόσβαση σε στοιχεία
Ομοίως, μπορείτε να δημιουργήσετε όσες μεταβλητές τύπου Tstudent χρειάζεστε. Μπορείτε ακόμη να δημιουργήσετε έναν πίνακα τύπου Tstudent όπως κάθε άλλος τύπος δεδομένων.
Δημόσιος τύπος Φοιτητής fName As String 'For First Name lName As String' For Last Name rNo As Integer 'For Roll Number clss As string' For Class class as String 'For Section Name subject () As String' For Subjects of end End Type ' Δημιουργία συστοιχίας Tstudents τύπου Sub SchoolInfo () Dim schoolName As String Dim students () As Tstudent schoolName = "Senior School" ReDim μαθητές (10) Για i = 0 έως 9 μαθητές (i) .fName = "name" & Str ( i + 1) μαθητές (i) .rNo = i + 1 Next i Debug.Print ("Name: Roll No") For i = 0 To 9 Debug.Print (students (i) .fName & ":" & students ( i) .rNo) Επόμενο i End Sub
Όταν εκτελείτε αυτόν τον κώδικα, θα εκτυπωθεί στο άμεσο παράθυρο.
Όνομα: Αριθμός ρόλου
όνομα 1: 1 όνομα 2: 2 όνομα 3: 3 όνομα 4: 4 όνομα 5: 5 όνομα 6: 6 όνομα 7: 7 όνομα 8: 8 όνομα 9: 9 όνομα 10: 10 |
Στον παραπάνω κώδικα, καθορίστηκε πρώτα η δομή UDT πριν και το δευτερεύον (θα εξηγήσω αργότερα γιατί). Μόλις δημιουργήσαμε έναν πίνακα χρησιμοποιώντας μια φωτεινή λέξη -κλειδί όπως κάνουμε για οποιαδήποτε μεταβλητή στο VBA.
Στη συνέχεια χρησιμοποιήσαμε το Redim για να ορίσουμε το μέγεθος των πινάκων. Στη συνέχεια, χρησιμοποιούμε ένα βρόχο for για να ξεκινήσουμε τον πίνακα.
Για πρόσβαση στα στοιχεία της δομής χρησιμοποιούμε ένα άλλο για βρόχο. Αυτό είναι.
Γιατί δηλώσαμε το UDT στην κορυφή της ενότητας;
Εάν δηλώσουμε ένα UDT πρώτα σε μια ενότητα, εκτός οποιασδήποτε υπορουτίνας ή συνάρτησης, είναι διαθέσιμη σε όλες τις ενότητες του βιβλίου εργασίας. Σημαίνει ότι αν έχετε εκατό συνδρομές και λειτουργίες σε μια ενότητα, όλες μπορούν να δηλώσουν μεταβλητές τύπου Student στο σώμα τους.
Εάν το UDT δεν είναι ιδιωτικό, θα είναι διαθέσιμο σε όλες τις ενότητες του βιβλίου εργασίας. Εάν θέλετε μια δομή (UDT) να είναι διαθέσιμη μόνο σε μια ενότητα που περιέχει, δηλώστε την ιδιωτική.
Ιδιωτικός τύπος Μαθητής fName As String lName As String rNo As Integer clss As Integer section As String subject () As String End type
Δεν μπορείτε να έχετε UDT σε διαδικαστικό επίπεδο. Αυτό σημαίνει ότι δεν μπορείτε να ορίσετε έναν τύπο δεδομένων που ορίζεται από το χρήστη μέσα σε μια υπορουτίνα ή μια συνάρτηση.
Ένθετοι τύποι καθορισμένοι από το χρήστη
Ας υποθέσουμε ότι έχετε UDT που ονομάζεται αυτοκίνητο. Το αυτοκίνητο έχει τα δικά του στοιχεία. Ομοίως, έχετε ένα UDT που ονομάζεται ποδήλατο και μπορεί να έχει τις δικές του ιδιότητες.
Τώρα ας υποθέσουμε ότι χρειάζεστε έναν τύπο δεδομένων που ονομάζεται όχημα. Το όχημα μπορεί να έχει ως αυτοκίνητο ένα αυτοκίνητο και ένα ποδήλατο. Μπορούμε να το κάνουμε αυτό; Ναι μπορούμε να το κάνουμε αυτό. Δείτε τον παρακάτω κώδικα
Ιδιωτικός τύπος καθίσματα Tcar ως ακέραιος τύπου τύπου Boolean χρώμα χρώματος ως συμβολοσειράς Κατασκευαστής ως String Dop As ημερομηνία rc_no Ως String End Type Ιδιωτικός τύπος Tbike καθίσματα ως ακέραιος τύπος ως χρώμα συμβολοσειράς ως κατασκευαστής συμβολοσειράς ως String Dop As Date rc_no Ως String End Type Private Τύπος Tvehicle number_of_Vehicle As Integer bike As Tbike Car As Tcar End Type Sub automVarification () Dim myVehicles As Tvehicle myVehicles.number_of_Vehicle = 2 myVehicles.bike.seats = 1 myVehicles.bike.typ = "Racing" myVehicles.car.seats = " "myVehicles.car.ac = True Debug.Print myVehicles.number_of_Vehicle Debug.Print myVehicles.bike.typ Debug.Print myVehicles.car.ac End Sub
Εδώ, έχουμε ορίσει τρεις τύπους δεδομένων που ορίζονται από το χρήστη. Το πρώτο είναι το Tcar που περιέχει ορισμένες πληροφορίες που σχετίζονται με τα αυτοκίνητα. Το δεύτερο είναι το ποδήλατο, περιέχει επίσης κάποιες πληροφορίες σχετικά με το ποδήλατο.
Το τρίτο UDT είναι το Tvehicle. Περιέχει μία μεταβλητή για αποθήκευση αριθμού οχημάτων και δύο μεταβλητές τύπου Tcar και Tbike.
Ιδιωτικό Αυτοκίνητο
αριθμός_οχήματος ως ακέραιος
ποδήλατο As Tbike
αυτοκίνητο ως Tcar
Τύπος τέλους
Για πρόσβαση σε μεταβλητές Tcar και Tbike μπορούμε να χρησιμοποιήσουμε τον τύπο δεδομένων Tvehicle. Στο δευτερεύον, έχουμε ορίσει μόνο μία μεταβλητή τύπου Tvehicle ως myVehicles. Όταν δημιουργούμε αυτήν τη μεταβλητή, το VBA δημιουργεί επίσης μεταβλητές Tcar και Tbike.
Για την προετοιμασία και την πρόσβαση στις μεταβλητές του Tcar και του Tcar, μπορούμε να χρησιμοποιήσουμε τη μεταβλητή myVehicle. Όπως μπορείτε να δείτε στον κώδικα.
myVehicles.number_of_Vehicle = 2
myVehicles.bike.seats = 1
myVehicles.bike.typ = "Αγώνες"
myVehicles.car.seats = "4"
myVehicles.car.ac = Αλήθεια
Όταν τρέχουμε το sub, εμφανίζεται αυτό το αποτέλεσμα.
Αυτή η δυνατότητα αυξάνει πραγματικά τη δύναμη του προγραμματισμού VBA εκθετικά. Μπορείτε να δομήσετε τον τύπο δεδομένων σας όπως οντότητες πραγματικού κόσμου. Μπορείτε να δημιουργήσετε σχέσεις μεταξύ τύπων δεδομένων που μπορεί να είναι χρήσιμες σε ένα μεγάλο έργο.
Λοιπόν, ναι, με αυτόν τον τρόπο μπορείτε να δημιουργήσετε και να χρησιμοποιήσετε έναν τύπο δεδομένων ή δομή που καθορίζεται από το χρήστη στο VBA. Ελπίζω να μπόρεσα να το εξηγήσω. Εάν έχετε οποιεσδήποτε ερωτήσεις σχετικά με αυτό το άρθρο ή άλλες ερωτήσεις που σχετίζονται με το VBA, ρωτήστε με στην παρακάτω ενότητα σχολίων. Θα χαρώ πολύ να σας ακούσω.
Μεταβλητές VBA στο Excel| Το VBA σημαίνει Visual Basic for Applications. Είναι μια γλώσσα προγραμματισμού από τη Microsoft. Χρησιμοποιείται με εφαρμογές του Microsoft Office, όπως MSExcel, MS-Word και MS-Access, ενώ οι μεταβλητές VBA είναι συγκεκριμένες λέξεις-κλειδιά.
Πεδίο μεταβλητής Excel VBA| Σε όλες τις γλώσσες προγραμματισμού, έχουμε προσδιοριστές μεταβλητής πρόσβασης που ορίζουν από πού μπορεί να έχει πρόσβαση μια καθορισμένη μεταβλητή. Το Excel VBA δεν αποτελεί εξαίρεση. Το VBA έχει επίσης προσδιοριστικά πεδίου.
Επιχειρήματα ByRef και ByVal | Όταν ένα όρισμα μεταβιβάζεται ως όρισμα ByRef σε διαφορετικό υποσύστημα ή συνάρτηση, αποστέλλεται η αναφορά της πραγματικής μεταβλητής. Τυχόν αλλαγές που γίνονται στο αντίγραφο της μεταβλητής, θα αντικατοπτρίζονται στο αρχικό όρισμα.
Διαγράψτε φύλλα χωρίς προτροπές επιβεβαίωσης χρησιμοποιώντας VBA στο Microsoft Excel | Δεδομένου ότι διαγράφετε φύλλα χρησιμοποιώντας VBA, γνωρίζετε τι κάνετε. Θα θέλατε να πείτε στο Excel να μην εμφανίζει αυτήν την προειδοποίηση και να διαγράψει το καταραμένο φύλλο.
Προσθήκη και αποθήκευση νέου βιβλίου εργασίας χρησιμοποιώντας το VBA στο Microsoft Excel 2016| Σε αυτόν τον κώδικα, δημιουργήσαμε πρώτα μια αναφορά σε ένα αντικείμενο βιβλίου εργασίας. Και στη συνέχεια το αρχικοποιήσαμε με ένα νέο αντικείμενο βιβλίου εργασίας. Το πλεονέκτημα αυτής της προσέγγισης είναι ότι μπορείτε να κάνετε εύκολα λειτουργίες σε αυτό το νέο βιβλίο εργασίας. Όπως αποθήκευση, κλείσιμο, διαγραφή κλπ
Εμφάνιση μηνύματος στη γραμμή κατάστασης του Excel VBA| Η γραμμή κατάστασης στο excel μπορεί να χρησιμοποιηθεί ως οθόνη κώδικα. Όταν ο κώδικας VBA είναι μεγάλος και εκτελείτε πολλές εργασίες χρησιμοποιώντας το VBA, συχνά απενεργοποιείτε την ενημέρωση της οθόνης, έτσι ώστε να μην βλέπετε αυτήν την οθόνη να τρεμοπαίζει.
Απενεργοποιήστε τα μηνύματα προειδοποίησης χρησιμοποιώντας το VBA στο Microsoft Excel 2016| Αυτός ο κώδικας όχι μόνο απενεργοποιεί τις ειδοποιήσεις VBA αλλά επίσης αυξάνει την αποδοτικότητα χρόνου του κώδικα. Ας δούμε πώς.
Δημοφιλή άρθρα:
50 συντομεύσεις Excel για να αυξήσετε την παραγωγικότητά σας | Γίνετε πιο γρήγοροι στην εργασία σας. Αυτές οι 50 συντομεύσεις θα σας κάνουν να εργάζεστε ακόμη πιο γρήγορα στο Excel.
Η συνάρτηση VLOOKUP στο Excel | Αυτή είναι μια από τις πιο δημοφιλείς και δημοφιλείς λειτουργίες του excel που χρησιμοποιείται για την αναζήτηση τιμών από διαφορετικά εύρη και φύλλα.
COUNTIF στο Excel 2016 | Μετρήστε τιμές με συνθήκες χρησιμοποιώντας αυτήν την εκπληκτική συνάρτηση. Δεν χρειάζεται να φιλτράρετε τα δεδομένα σας για να μετρήσετε συγκεκριμένες τιμές. Η λειτουργία Countif είναι απαραίτητη για την προετοιμασία του ταμπλό σας.
Πώς να χρησιμοποιήσετε τη συνάρτηση SUMIF στο Excel | Αυτή είναι μια άλλη βασική λειτουργία του ταμπλό. Αυτό σας βοηθά να συνοψίσετε τιμές υπό συγκεκριμένες συνθήκες.