VBA Dynamic Array (Redim & Redim Preserve)

Αυτό το σεμινάριο θα δείξει πώς να χρησιμοποιείτε δυναμικούς πίνακες (redim και redim conserve) στο VBA.

Δυναμική συστοιχία

Δυναμικές συστοιχίες είναι πίνακες που μπορούν να αλλάξουν μεγέθη (σε αντίθεση με στατικοί πίνακες, τα οποία είναι στατικά).

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

1 Dim strNames () Ως συμβολοσειρά

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

1 ReDim strNames (1 έως 3)

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

Δυναμικές συστοιχίες παραλλαγών

Σημείωση: Οι παραλλαγές συστοιχιών είναι λίγο διαφορετικές. Με ποικίλους πίνακες, δεν χρειάζεται να ορίσετε το μέγεθος του πίνακα με το ReDim πριν από την εκχώρηση τιμών.

12345678 Sub TestArray ()«δηλώστε τη μεταβλητήDim varNames () Ως παραλλαγή"συμπληρώστε τον πίνακαvarNames () = Array ("Fred", "Wilma", "Barney", "Betty")"επιστρέψτε τις τιμέςMsgBox Join (varNames, ",")Τέλος υπο

Redim εναντίον Redim Preserve

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

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

Χρησιμοποιώντας το ReDim

Στην πράξη, η αλλαγή μεγέθους ενός πίνακα με το ReDim μοιάζει με αυτό:

123456789101112 Sub TestReDim ()"δηλώστε τον πίνακα συμβολοσειρώνDim strNames () Ως συμβολοσειρά'Αλλαγή μεγέθους του πίνακα συμβολοσειράς για να μπορεί να κρατήσει 3 τιμέςReDim strNames (1 έως 3)"συμπληρώστε τον πίνακα με 3 ονόματαstrNames (1) = "Mel"strNames (2) = "Steve"strNames (3) = "Μπομπ"«εμφανίστε το αποτέλεσμα στο άμεσο παράθυροDebug.Print Join (strNames, vbCrLf)Τέλος υπο

Χρησιμοποιώντας το ReDim Preserve

Σε αυτό το παράδειγμα, θα χρησιμοποιήσουμε το ReDim για να ορίσουμε τον αρχικό δυναμικό πίνακα και στη συνέχεια το ReDim Preserve για να αλλάξουμε το μέγεθος του πίνακα, τήρηση τις αρχικές τιμές:

1234567891011121314151617 Sub TestReDim ()"δηλώστε τον πίνακα συμβολοσειρώνDim strNames () Ως συμβολοσειρά'Αλλαγή μεγέθους του πίνακα συμβολοσειρών για να μπορεί να κρατήσει 3 τιμέςReDim strNames (1 έως 3)"συμπληρώστε τον πίνακαstrNames (1) = "Mel"strNames (2) = "Steve"strNames (3) = "Μπομπ"«εμφανίστε το αποτέλεσμα στο άμεσο παράθυροDebug.Print Join (strNames, vbCrLf)«επαναλάβετε αλλά διατηρήστε τα δεδομέναReDim Conserve strNames (1 έως 4)strNames (4) = "Fred"«εμφανίστε το αποτέλεσμα στο άμεσο παράθυροDebug.Print Join (strNames, vbCrLf)Τέλος υπο

Εάν δεν χρησιμοποιείτε το ΔΙΑΤΗΡΩ δήλωση, θα χάσετε τα δεδομένα που υπήρχαν στον πίνακα προηγουμένως.

Στο αμέσως επάνω παράθυρο, ο πίνακας συμπλήρωσε τους Mel, Steve και Bob. Όταν επαναδημοσιεύτηκε, αφαίρεσε αυτές τις τιμές και αντ 'αυτού επέστρεψε 3 κενές τιμές και στη συνέχεια την τιμή "Fred". Αυτό οφείλεται στο ΔΙΑΤΗΡΩ η δήλωση παραλείπεται.

Θα βοηθήσει στην ανάπτυξη του τόπου, μοιράζονται τη σελίδα με τους φίλους σας

wave wave wave wave wave