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) ως String End 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

Παράδειγμα # 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

So, the first array is equal to the word “Welcome” the second array is equal to the word “to,” and the third array is equal to the word “VBA.”

Step 5: Now store these array values in cells.

Code:

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

Step 6: If you run this code, we should have these values in A1, B1, and C1 cells, respectively.

Example #2 - Resize the Array Size While Remembering the Old Values.

Once the array name is assigned values, we can also resize at any point in time in the procedure by using the word “ReDim Preserve.”

Assume you have already declared an array name and assigned values to those array name like the below one.

Now you would like to increase the array length by 2, i.e., 5. In this case, we can use the word VBA “ReDim Preserve” to resize the array length to remember the old values as well.

Code:

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").Value = MyArray(4) End Sub

Now we can assign two more values to the array.

Code:

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").Value = MyArray(4) End Sub

Now store these values in cells.

Code:

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").Value = MyArray(4) End Sub

Now run the macro and see what happens.

So we got the new word in the D1 cell.

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

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

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

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

ενδιαφέροντα άρθρα...