Συλλογή VBA | Πώς να δημιουργήσετε αντικείμενο συλλογής στο VBA;

Αντικείμενο συλλογής Excel VBA

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

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

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

Η συλλογή VBA μοιάζει πολύ με το "Λεξικό VBA", αλλά το λεξικό απαιτεί την αναφορά εξωτερικού αντικειμένου για να το ρυθμιστεί κάτω από το παράθυρο αναφοράς αντικειμένου. Με το λεξικό VBA πρέπει να ορίσουμε τον τύπο αναφοράς ως "Microsoft Scripting Runtime" αλλά η Συλλογή δεν απαιτεί κανένα από αυτά τα επιπλέον εξαρτήματα.

Πώς να δημιουργήσετε αντικείμενο συλλογής στο VBA;

Για να ξεκινήσετε με τη συλλογή πρώτα πρέπει να δηλώσουμε τη μεταβλητή ως "Συλλογή".

Μπορείτε να κατεβάσετε αυτό το Πρότυπο συλλογής Excel VBA εδώ - Πρότυπο συλλογής VBA Excel

Κώδικας:

 Υπο Συλλογή_ Παράδειγμα () Dim Col As Collection End Sub 

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

Κώδικας:

 Υπο Συλλογή_ Παράδειγμα () Dim Col As Collection Set Col = Νέα Συλλογή End Sub 

Τώρα με τη μεταβλητή, μπορούμε να έχουμε πρόσβαση σε όλες τις μεθόδους συλλογής μεταβλητής "Col".

Κώδικας:

 Sub Collection_Example () Dim Col As Collection Set Col = Νέα Συλλογή Col. End Sub 

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

Κώδικας:

 Sub Collection_Example () Dim Col As Collection Set Col = Νέα συλλογή Dim ColResult as String End Sub 

Τώρα χρησιμοποιήστε τη μεταβλητή "Col" επιλέξτε "Προσθήκη".

Κώδικας:

 Υπο Συλλογή_ Παράδειγμα () Dim Col As Συλλογή Σύνολο Col = Νέα Συλλογή Col. Προσθήκη End Sub 

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

Στην ενότητα Στοιχείο, το όρισμα εισάγει την τιμή του κινητού.

Κώδικας:

 Υπο Συλλογή_ Παράδειγμα () Dim Col As Collection Set Col = Νέα Συλλογή Col. Προσθήκη στοιχείου: = 15000, End Sub 

Στη συνέχεια, στο όρισμα Key εισαγάγετε την επωνυμία του κινητού.

Κώδικας:

 Sub Collection_Example () Dim Col As Collection Set Col = New Collection Col.Add Item: = 15000, Key: = "Redmi" End Sub 

Τώρα για τη μεταβλητή "ColResult", θα αποθηκεύσουμε το αποτέλεσμα της μεταβλητής αντικειμένου "Col".

Κώδικας:

 Sub Collection_Example () Dim Col As Collection Set Col = New Collection Col.Add Item: = 15000, Key: = "Redmi" ColResult = Col (End Sub 

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

Κώδικας:

 Sub Collection_Example () Dim Col As Collection Set Col = New Collection Col.Add Item: = 15000, Key: = "Redmi" ColResult = Col ("Redmi") End Sub 

Τώρα ας δείξουμε το αποτέλεσμα στο πλαίσιο μηνυμάτων στο VBA.

Κώδικας:

 Sub Collection_Example () Dim Col As Collection Collection Col = New Collection Col.Add Item: = 15000, Key: = "Redmi" ColResult = Col ("Redmi") MsgBox ColResult End Sub 

Εντάξει, τελειώσαμε όταν τρέχουμε τον κώδικα θα πρέπει να δούμε την τιμή της μάρκας για κινητά "Redmi".

Καλύτερη κατανόηση των παραμέτρων κλειδιού και στοιχείων

Είμαι βέβαιος ότι δεν είναι εύκολο να κατανοήσουμε τις παραμέτρους του αντικειμένου Συλλογή. Επιτρέψτε μου να σας εξηγήσω με ένα απλό παράδειγμα.

Φανταστείτε ότι έχετε ένα μενού φρούτων με το όνομα και την τιμή των φρούτων. Ας υποθέσουμε ότι ψάχνετε την τιμή των φρούτων "Apple" με το όνομα του φρούτου.

Για να ψάξουμε την τιμή του φρούτου πρέπει να αναφέρουμε το όνομα του φρούτου, δηλαδή στη συλλογή της γλώσσας VBA Το όνομα του φρούτου είναι το κλειδί και η τιμή του φρούτου είναι "Item"

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

Προηγμένο παράδειγμα

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

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

Κώδικας:

 Sub Collection_Example2 () Dim ItemsCol As Collection Dim ColResult As String Set ItemsCol = New Collection ItemsCol.Add Key: = "Apple", Item: = 150 ItemsCol.Add Key: = "Orange", Item: = 75 ItemsCol.Add Key: = "Water Melon", Item: = 45 ItemsCol.Add Key: = "Mush Millan", Item: = 85 ItemsCol.Add Key: = "Mango", Item: = 65 ColResult = Application.InputBox (Prompt: = "Παρακαλώ Εισαγάγετε το όνομα του φρούτου ") Εάν το ItemsCol (ColResult)" "Στη συνέχεια, το MsgBox" Η τιμή του φρούτου "& ColResult &" είναι: "& ItemsCol (ColResult) Άλλες η συλλογή "End if End Sub