VBA ReDim | Χειριστείτε δυναμικές συστοιχίες χρησιμοποιώντας το VBA ReDim Preserve

Δήλωση Rexim Excel VBA

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

Οι πίνακες αποτελούν σημαντικό μέρος της κωδικοποίησης VBA. Χρησιμοποιώντας πίνακες μπορούμε να αποθηκεύσουμε περισσότερες από μία τιμές στην ίδια μεταβλητή που ορίσαμε. Όπως ο τρόπος με τον οποίο δηλώνουμε τη μεταβλητή χρησιμοποιώντας τη λέξη "Dim" ομοίως, πρέπει να δηλώσουμε το όνομα του πίνακα χρησιμοποιώντας επίσης το "Dim".

Για να δηλώσουμε το όνομα του πίνακα, πρέπει πρώτα να προσδιορίσουμε το είδος του πίνακα που πρόκειται να ορίσουμε. Σε πίνακες, έχουμε 5 τύπους.

  1. Στατική σειρά
  2. Δυναμική συστοιχία
  3. Μονοδιάστατη συστοιχία
  4. Διάστατη συστοιχία
  5. Πολυδιάστατη σειρά

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

Κώδικας:

 Sub ReDim_Example1 () Dim MyArray (1 έως 5) ως End String Sub 

Εδώ το MyArray είναι το όνομα του πίνακα που μπορεί να κρατήσει την τιμή από το 1 έως το 5. Το MyArray μπορεί να κρατήσει 5 διαφορετικά αποτελέσματα σε αυτό, όπως το παρακάτω.

Κώδικας:

 Sub ReDim_Example1 () Dim MyArray (1 to 5) As String MyArray (1) = "Hi" MyArray (2) = "Good" MyArray (3) = "Morning" MyArray (4) = "Έχετε ένα" MyArray (5) = "Ωραία μέρα" End Sub 

Dynamic Array με δήλωση ReDim

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

 Υπο ReDim_Example1 () Dim MyArray () ως String End Sub 

Για να κάνουμε το όνομα του πίνακα δυναμικό, πρέπει πρώτα να το δηλώσουμε με τη λέξη «Dim», αλλά να μην αποφασίσουμε εκ των προτέρων το μέγεθος του πίνακα. Απλώς ονομάζουμε έναν πίνακα με κενές τιμές μέσα στην παρένθεση (). Όταν ο πίνακας δεν περιλαμβάνει μέγεθος τότε αντιμετωπίζεται ως δυναμικός πίνακας.

Dim MyArray () ως συμβολοσειρά

Τη στιγμή που αναφέρετε το μέγεθος του πίνακα μέσα στην παρένθεση, γίνεται στατικός πίνακας. Dim MyArray (1 έως 5) ως συμβολοσειρά

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

ReDim MyArray (1 έως 6) ως συμβολοσειρά

Οποιαδήποτε τιμή αποθηκεύεται στο όνομα του πίνακα στα προηγούμενα βήματα, δηλ. Χρησιμοποιώντας τη δήλωση "Dim" είναι μηδενική και το μέγεθος που δηλώσαμε χρησιμοποιώντας το "ReDim" γίνεται το νέο μέγεθος του πίνακα.

Παραδείγματα χρήσης του VBA Redim Statement

Μπορείτε να κάνετε λήψη αυτού του προτύπου VBA ReDim Excel εδώ - Πρότυπο VBA ReDim Excel

Παράδειγμα # 1

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

Βήμα 1: Δημιουργήστε πρώτα ένα όνομα μακροεντολής.

Βήμα 2: Δηλώστε ένα όνομα πίνακα ως συμβολοσειρά.

Κώδικας:

 Υπο ReDim_Example1 () Dim MyArray () ως String End Sub 

Βήμα 3: Τώρα χρησιμοποιήστε τη λέξη "Redim" και αντιστοιχίστε το μέγεθος του πίνακα.

Κώδικας:

 Sub ReDim_Example1 () Dim MyArray () ως String ReDim MyArray (1 έως 3) End Sub 

Βήμα 4: Τώρα το όνομα του πίνακα "MyArray" μπορεί να χωρέσει έως και 3 τιμές εδώ. Αντιστοιχίστε την τιμή σε αυτές τις 3 συστοιχίες όπως η παρακάτω.

Κώδικας:

 Sub ReDim_Example1 () Dim MyArray () As String ReDim MyArray (1 to 3) MyArray (1) = "Welcome" MyArray (2) = "to" MyArray (3) = "VBA" End Sub 

Έτσι, ο πρώτος πίνακας είναι ίσος με τη λέξη "Welcome", ο δεύτερος πίνακας είναι ίσος με τη λέξη "to" και ο τρίτος πίνακας είναι ίσος με τη λέξη "VBA".

Βήμα 5: Τώρα αποθηκεύστε αυτές τις τιμές πίνακα σε κελιά.

Κώδικας:

 Sub ReDim_Example1 () Dim MyArray () As String ReDim MyArray (1 to 3) MyArray (1) = "Welcome" MyArray (2) = "to" MyArray (3) = "VBA" Range ("A1"). Τιμή = MyArray (1) Range ("B1"). Value = MyArray (2) Range ("C1"). Value = MyArray (3) End Sub 

Βήμα 6: Εάν εκτελέσετε αυτόν τον κώδικα, θα πρέπει να έχουμε αυτές τις τιμές στα κελιά A1, B1 και C1 αντίστοιχα.

Παράδειγμα # 2 - Αλλαγή μεγέθους του μεγέθους συστοιχίας ενώ θυμάστε τις παλιές τιμές.

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

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

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

Κώδικας:

 Sub ReDim_Example2 () Dim MyArray () As String ReDim MyArray (3) MyArray (1) = "Welcome" MyArray (2) = "to" MyArray (3) = "VBA" ReDim Preserve MyArray (4) MyArray (4) = "Character 1" Range ("A1"). Value = MyArray (1) Range ("B1"). Value = MyArray (2) Range ("C1"). Value = MyArray (3) Range ("D1"). Τιμή = MyArray (4) End Sub 

Τώρα μπορούμε να αντιστοιχίσουμε δύο ακόμη τιμές στον πίνακα.

Κώδικας:

 Sub ReDim_Example2 () Dim MyArray () As String ReDim MyArray (3) MyArray (1) = "Welcome" MyArray (2) = "to" MyArray (3) = "VBA" ReDim Preserve MyArray (4) MyArray (4) = "Character 1" Range ("A1"). Value = MyArray (1) Range ("B1"). Value = MyArray (2) Range ("C1"). Value = MyArray (3) Range ("D1"). Τιμή = MyArray (4) End Sub 

Τώρα αποθηκεύστε αυτές τις τιμές σε κελιά.

Κώδικας:

 Sub ReDim_Example2 () Dim MyArray () As String ReDim MyArray (3) MyArray (1) = "Welcome" MyArray (2) = "to" MyArray (3) = "VBA" ReDim Preserve MyArray (4) MyArray (4) = "Character 1" Range ("A1"). Value = MyArray (1) Range ("B1"). Value = MyArray (2) Range ("C1"). Value = MyArray (3) Range ("D1"). Τιμή = MyArray (4) End Sub 

Τώρα εκτελέστε τη μακροεντολή και δείτε τι συμβαίνει

Λάβαμε λοιπόν τη νέα λέξη στο κελί D1.

Ο λόγος για τον οποίο πρέπει να χρησιμοποιήσουμε τη λέξη "preserve" επειδή ο πίνακας πρέπει να θυμάται τις παλιές τιμές πίνακα στη διαδικασία.

Τη στιγμή που αγνοείτε τη λέξη "διατηρήστε" δεν θα θυμάστε τις παλιές τιμές.

Πράγματα που πρέπει να θυμάστε εδώ

  • Το ReDim μπορεί να κρατήσει μόνο την τελευταία τιμή του πίνακα, όχι τις πολλές τιμές. Για παράδειγμα, δεν μπορούμε να χρησιμοποιήσουμε αυτόν τον κωδικό "ReDim Preserve MyArray (4 έως 5)", αυτό θα ρίξει το σφάλμα.
  • Δεν μπορούμε να ReDim στατικές συστοιχίες. Τη στιγμή που εκχωρείτε το μέγεθος του πίνακα μέσα στην παρένθεση, γίνεται στατικός πίνακας.
  • Χρησιμοποιώντας το ReDim δεν μπορούμε να αλλάξουμε τον τύπο δεδομένων. Ο πίνακας μπορεί να διατηρήσει οποιονδήποτε τύπο δεδομένων που έχουμε εκχωρήσει κατά τη δήλωση του πίνακα.