Οι περισσότερες γλώσσες προγραμματισμού υποστηρίζουν πίνακες, συμπεριλαμβανομένου του VBA. Ένας πίνακας είναι μια ομάδα μεταβλητών που μοιράζονται ένα όνομα. Αναφέρεστε σε μια συγκεκριμένη μεταβλητή στον πίνακα χρησιμοποιώντας το όνομα του πίνακα και έναν αριθμό ευρετηρίου σε παρένθεση. Για παράδειγμα, μπορείτε να ορίσετε έναν πίνακα 12 μεταβλητών συμβολοσειρών για να φυλάσσονται τα ονόματα των μηνών του έτους. Εάν ονομάσετε τον πίνακα MonthNames , μπορείτε να αναφερθείτε στο πρώτο στοιχείο του πίνακα ως MonthNames (1), στο δεύτερο στοιχείο ως MonthNames (2) και ούτω καθεξής.
Δήλωση πινάκων
Για να μπορέσετε να χρησιμοποιήσετε έναν πίνακα, πρέπει να τον δηλώσετε. Χωρίς εξαιρέσεις. Σε αντίθεση με τις κανονικές μεταβλητές, η VBA είναι πολύ αυστηρή σχετικά με αυτόν τον κανόνα. Δηλώνετε έναν πίνακα με δήλωση Dim ή Public, όπως ακριβώς δηλώνετε μια κανονική μεταβλητή. Ωστόσο, πρέπει επίσης να καθορίσετε τον αριθμό των στοιχείων στον πίνακα. Μπορείτε να το κάνετε αυτό καθορίζοντας τον πρώτο αριθμό ευρετηρίου, τη λέξη-κλειδί Προς και τον τελευταίο αριθμό ευρετηρίου — όλα μέσα σε παρένθεση. Το ακόλουθο παράδειγμα δείχνει πώς να δηλώσετε έναν πίνακα 100 ακεραίων:
Dim MyArray(1 έως 100) ως ακέραιος αριθμός
Όταν δηλώνετε έναν πίνακα, μπορείτε να επιλέξετε να καθορίσετε μόνο το ανώτερο ευρετήριο. Εάν παραλείψετε τον χαμηλότερο δείκτη, το VBA υποθέτει ότι είναι 0. Επομένως, και οι δύο παρακάτω προτάσεις δηλώνουν τον ίδιο πίνακα 101 στοιχείων:
Dim MyArray (0 έως 100) ως ακέραιος αριθμός
Dim MyArray (100) ως ακέραιος αριθμός
Εάν θέλετε η VBA να υποθέσει ότι το 1 (αντί για το 0) είναι ο χαμηλότερος δείκτης για τους πίνακες σας, συμπεριλάβετε την ακόλουθη δήλωση στην ενότητα Δηλώσεις στο επάνω μέρος της ενότητας σας:
Βάση επιλογής 1
Αυτή η δήλωση αναγκάζει τη VBA να χρησιμοποιήσει το 1 ως τον πρώτο αριθμό ευρετηρίου για πίνακες που δηλώνουν μόνο το ανώτερο ευρετήριο. Εάν υπάρχει αυτή η δήλωση, οι ακόλουθες προτάσεις είναι ίδιες, δηλώνοντας και οι δύο έναν πίνακα 100 στοιχείων:
Dim MyArray (1 έως 100) ως ακέραιος αριθμός
Dim MyArray (100) ως ακέραιος αριθμός
Πολυδιάστατοι πίνακες
Οι πίνακες που δημιουργήθηκαν στα προηγούμενα παραδείγματα είναι όλοι μονοδιάστατοι πίνακες. Σκεφτείτε τους μονοδιάστατους πίνακες ως μια ενιαία γραμμή τιμών. Οι πίνακες που δημιουργείτε στο VBA μπορούν να έχουν έως και 60 διαστάσεις — αν και σπάνια χρειάζεστε περισσότερες από δύο ή τρεις διαστάσεις σε έναν πίνακα. Το ακόλουθο παράδειγμα δηλώνει έναν πίνακα 81 ακεραίων με δύο διαστάσεις:
Dim MyArray (1 έως 9, 1 έως 9) ως ακέραιος αριθμός
Μπορείτε να σκεφτείτε ότι αυτός ο πίνακας καταλαμβάνει μια μήτρα 9 x 9 — ιδανική για την αποθήκευση όλων των αριθμών σε ένα παζλ Sudoku.
Για να αναφερθείτε σε ένα συγκεκριμένο στοιχείο σε αυτόν τον πίνακα, πρέπει να καθορίσετε δύο αριθμούς ευρετηρίου (παρόμοιοι με τη «σειρά» και τη «στήλη» του στον πίνακα). Το ακόλουθο παράδειγμα δείχνει πώς μπορείτε να εκχωρήσετε μια τιμή σε ένα στοιχείο αυτού του πίνακα:
MyArray (3, 4)= 125
Αυτή η δήλωση εκχωρεί μια τιμή σε ένα μεμονωμένο στοιχείο του πίνακα. Εάν σκέφτεστε τον πίνακα με όρους πίνακα 9 x 9, αυτό εκχωρεί 125 στο στοιχείο που βρίσκεται στην τρίτη σειρά και την τέταρτη στήλη του πίνακα.
Δείτε πώς μπορείτε να δηλώσετε έναν τρισδιάστατο πίνακα, με 1.000 στοιχεία:
Dim My3DArray (1 έως 10, 1 έως 10, 1 έως 10) ως ακέραιος αριθμός
Μπορείτε να σκεφτείτε έναν τρισδιάστατο πίνακα ως κύβο. Η απεικόνιση μιας σειράς περισσότερων από τριών διαστάσεων είναι πιο δύσκολη.
Δυναμικοί πίνακες
Μπορείτε επίσης να δημιουργήσετε δυναμικούς πίνακες. Ένας δυναμικός πίνακας δεν έχει προκαθορισμένο αριθμό στοιχείων. Δηλώστε έναν δυναμικό πίνακα με ένα κενό σύνολο παρενθέσεων:
Dim MyArray () Ως ακέραιος αριθμός
Για να μπορέσετε να χρησιμοποιήσετε αυτόν τον πίνακα, πρέπει να χρησιμοποιήσετε τη δήλωση ReDim για να πείτε στη VBA πόσα στοιχεία έχει ο πίνακας. Συνήθως, ο αριθμός των στοιχείων στον πίνακα καθορίζεται ενώ εκτελείται ο κώδικάς σας. Μπορείτε να χρησιμοποιήσετε τη δήλωση ReDim όσες φορές χρειάζεται, αλλάζοντας το μέγεθος του πίνακα όσο συχνά χρειάζεται. Το ακόλουθο παράδειγμα δείχνει πώς να αλλάξετε τον αριθμό των στοιχείων σε έναν δυναμικό πίνακα. Υποθέτει ότι η μεταβλητή NumElements περιέχει μια τιμή, την οποία υπολόγισε ο κώδικάς σας.
ReDim MyArray (1 σε NumElements)
Όταν αλλάζετε το μέγεθος ενός πίνακα χρησιμοποιώντας το ReDim, διαγράφετε τυχόν τιμές που είναι αποθηκευμένες αυτήν τη στιγμή στα στοιχεία του πίνακα. Μπορείτε να αποφύγετε την καταστροφή των παλιών τιμών χρησιμοποιώντας τη λέξη-κλειδί Διατήρηση. Το ακόλουθο παράδειγμα δείχνει πώς μπορείτε να διατηρήσετε τις τιμές ενός πίνακα όταν επαναπροσδιορίζετε το μέγεθος του πίνακα:
ReDim Preserve MyArray (1 έως NumElements)
Εάν το MyArray έχει αυτήν τη στιγμή δέκα στοιχεία και εκτελέσετε την προηγούμενη πρόταση με NumElements ίσο με 12, τα πρώτα δέκα στοιχεία παραμένουν άθικτα και ο πίνακας έχει χώρο για δύο επιπλέον στοιχεία (μέχρι τον αριθμό που περιέχεται στη μεταβλητή NumElements). Ωστόσο, εάν το NumElements ισούται με 7, τα πρώτα επτά στοιχεία διατηρούνται, αλλά τα υπόλοιπα τρία στοιχεία έρχονται στο τέλος τους.