Πίνακας περιεχομένων
Ένας πίνακας είναι μια μεταβλητή που διατηρεί τα ίδια είδη δεδομένων. Εάν υπάρχει μόνο μια γραμμή ή μια στήλη δεδομένων, τότε είναι γνωστός ως μονοδιάστατος πίνακας. Ωστόσο, όταν υπάρχουν περισσότερες από μια γραμμές και στήλες, ονομάζεται δισδιάστατος πίνακας. Χρησιμοποιούμε ReDim για να αλλάξουμε το μέγεθος ενός πίνακα στην VBA. Επιπλέον, χρησιμοποιούμε την εντολή Διατηρήστε το λέξη-κλειδί με το ReDim για να διατηρήσετε τα παλιά δεδομένα ανέπαφα. Αυτό το άρθρο θα σας δείξει 2 γρήγοροι τρόποι για να " ReDim Preserve " a 2D συστοιχία στο Excel VBA .
Κατεβάστε το βιβλίο ασκήσεων
Μακροεντολή για ReDim Preserve 2D.xlsm
2 εύχρηστες προσεγγίσεις για τη διατήρηση της συστοιχίας 2D ReDim στο Excel VBA
Αυτό είναι το βασικό σύνολο δεδομένων που δημιουργήθηκε από ένα 2D συστοιχία με τρεις γραμμές και δύο στήλες. Αρχικά, θα δημιουργήσουμε αυτόν τον πίνακα. Στη συνέχεια, θα προσθέσουμε άλλη μια στήλη σε αυτόν τον πίνακα. Θα χρησιμοποιήσουμε την " ReDim Preserve "Επιπλέον, θα δείξουμε τι συμβαίνει αν δεν το χρησιμοποιήσουμε αυτό.
Από προεπιλογή, μπορούμε να αλλάξουμε το μέγεθος μόνο της τελευταίας διάστασης του πίνακα (δηλαδή των στηλών ή του ανώτερου ορίου). Θα μεταθέσουμε τον πίνακα, στη συνέχεια θα αλλάξουμε την τελευταία διάσταση και στη συνέχεια θα μεταθέσουμε ξανά για να αλλάξουμε το μέγεθος και των δύο διαστάσεων του 2D συστοιχία στο Excel VBA.
1. ReDim Διατήρηση της τελευταίας διάστασης 2D Array
Θα ορίσουμε πρώτα το 2D συστοιχία ως δυναμική. Στη συνέχεια, χρησιμοποιώντας το ReDim δήλωση, θα δημιουργήσουμε έναν πίνακα με τρεις γραμμές και δύο στήλες. Τέλος, θα χρησιμοποιήσουμε την εντολή ReDim δήλωση ξανά με το Διατηρήστε το λέξη-κλειδί για να αυξηθεί το άνω όριο του δισδιάστατου πίνακα.
Βήματα:
- Αρχικά, πατήστε ALT+F11 για να εμφανιστεί το Ενότητα VBA Εναλλακτικά, μπορείτε να το κάνετε αυτό από το παράθυρο Προγραμματιστής καρτέλα → επιλέξτε Visual Basic .
- Στη συνέχεια, από το Εισαγωγή καρτέλα → επιλέξτε Ενότητα Θα πληκτρολογήσουμε τον κώδικα VBA εδώ.
- Στη συνέχεια, πληκτρολογήστε τον ακόλουθο κώδικα στο Ενότητα παράθυρο.
Sub Redim_Preserve_2D_Array_Row() Dim Our_Array() As Variant ReDim Our_Array(1 To 3, 1 To 2) Our_Array(1, 1) = "Rachel" Our_Array(2, 1) = "Ross" Our_Array(3, 1) = "Joey" Our_Array(1, 2) = 25 Our_Array(2, 2) = 26 Our_Array(3, 2) = 25 Range("C6:D8").Value = Our_Array End Sub
Ανάλυση κώδικα VBA
- Πρώτον, καλούμε το Υποδιαδικασία " Redim_Preserve_2D_Array_Row ".
- Στη συνέχεια, δηλώνουμε τη μεταβλητή Our_Array ως δυναμικός πίνακας.
- Στη συνέχεια, ορίζουμε το μέγεθος του πίνακα. Το κατώτερο όριο είναι 3 , το ανώτερο όριο είναι 2 , και οι δύο ξεκινούν από 1 .
- Στη συνέχεια, αναθέτουμε τιμές στον πίνακα.
- Μετά από αυτό, εισάγουμε τις τιμές στο C6:D8 εύρος κυττάρων.
- Μετά από αυτό, θα εκτελέσουμε τον κώδικα.
- Λοιπόν, Αποθήκευση το Ενότητα και πατήστε Εκτέλεση .
- Ως αποτέλεσμα, θα επιστρέψει τις τιμές στις καθορισμένες περιοχές κελιών. Μπορούμε να δούμε ότι " Rachel " είναι στη σειρά 1 και στήλη 1 θέση, η οποία ορίστηκε ως ( 1,1 ) στον κώδικα VBA.
- Τώρα, θα αλλάξουμε το μέγεθος του πίνακα.
- Έτσι, προσθέστε αυτό στον προηγούμενο κώδικα και αφαιρέστε το πρώτο Δήλωση Range.Value . Επιπλέον, πώς φαίνεται ο κώδικας όπως μπορείτε να δείτε από το παρακάτω στιγμιότυπο.
ReDim Our_Array(1 To 3, 1 To 3) Our_Array(1, 3) = "Texas" Our_Array(2, 3) = "Mississippi" Our_Array(3, 3) = "Utah" Range("C6:E8").Value = Our_Array
- Εδώ, αυξήσαμε το ανώτερο όριο από ( 1 Προς 2 ) σε ( 1 Προς 3 ) από 1 .
- Στη συνέχεια, προσθέσαμε τις τιμές στον πίνακα.
- Τώρα αν εκτελέσουμε αυτόν τον κώδικα, τότε θα δούμε ότι οι προηγούμενες τιμές δεν διατηρούνται. Θα επιστρέψει κενό για τις προηγούμενες τιμές.
- Τώρα, μπορούμε να το διορθώσουμε αυτό προσθέτοντας το Λέξη-κλειδί Preserve στο Δήλωση ReDim .
- Τέλος, ο πλήρης κώδικάς μας θα είναι ο εξής.
Option Explicit Sub Redim_Preserve_2D_Array_Row() Dim Our_Array() As Variant ReDim Our_Array(1 To 3, 1 To 2) Our_Array(1, 1) = "Rachel" Our_Array(2, 1) = "Ross" Our_Array(3, 1) = "Joey" Our_Array(1, 2) = 25 Our_Array(2, 2) = 26 Our_Array(3, 2) = 25 ReDim Preserve Our_Array(1 To 3, 1 To 3) Our_Array(1, 3) = "Texas" Our_Array(2, 3) = "Mississippi" Our_Array(3, 3) = "Utah" Range("C6:E8").Value =Our_Array End Sub
- Τώρα, αν εμείς Εκτέλεση αυτόν τον κώδικα, τότε η έξοδος θα είναι κάπως έτσι. Έτσι, θα " ReDim Preserve " η τελευταία διάσταση ενός 2D συστοιχία στο Excel VBA... Τώρα, η επόμενη μέθοδος θα σας δείξει πώς να " ReDim Preserve " και να αλλάξετε το μέγεθος και των δύο διαστάσεων του πίνακα.
Διαβάστε περισσότερα: VBA για να λάβετε μοναδικές τιμές από τη στήλη σε συστοιχία στο Excel (3 κριτήρια)
Παρόμοιες αναγνώσεις
- Πώς να ονομάσετε μια συστοιχία πινάκων στο Excel (με εύκολα βήματα)
- Excel VBA για να διαβάσετε το αρχείο CSV σε συστοιχία (4 ιδανικά παραδείγματα)
- Πώς να μετατρέψετε σειρά σε συστοιχία στο Excel VBA (3 τρόποι)
- Excel VBA: Αφαίρεση αντιγράφων από μια συστοιχία (2 παραδείγματα)
2. ReDim Διατήρηση και των δύο διαστάσεων 2D Array στο Excel VBA
Σε αυτή την τελική μέθοδο, θα σας δείξουμε τα βήματα για να αλλάξετε το μέγεθος και να " ReDim Preserve " η 2D συστοιχία Εδώ, θα χρησιμοποιήσουμε το VBA Transpose συνάρτηση για να αλλάξουμε το μέγεθος του κάτω ορίου του πίνακα. Αν προσπαθούσαμε να αλλάξουμε το μέγεθος του κάτω ορίου του πίνακα στην πρώτη μέθοδο, τότε θα βλέπαμε το " Υποδείκτης εκτός εύρους "Τώρα, χωρίς περαιτέρω καθυστέρηση, ας δούμε πώς μπορούμε να το διορθώσουμε αυτό και να επιτύχουμε τον στόχο μας.
Βήματα:
- Πρώτον, όπως φαίνεται στην πρώτη μέθοδο , εμφανίζει το Ενότητα παράθυρο.
- Δεύτερον, προσθέστε τις ακόλουθες γραμμές κώδικα στον πρώτο κώδικα.
Our_Array = Application.Transpose(Our_Array) ReDim Preserve Our_Array(1 To 3, 1 To 4) Our_Array = Application.Transpose(Our_Array) Our_Array(4, 1) = "Monica" Our_Array(4, 2) = 26 Our_Array(4, 3) = "New Mexico" Range("C6:E9").Value = Our_Array
- Επιπλέον, ο κώδικας της τελικής μεθόδου μοιάζει ως εξής.
Option Explicit Sub ReDim_Preserve_2D_Array_Both_Dimensions() Dim Our_Array() As Variant ReDim Our_Array(1 To 3, 1 To 2) Our_Array(1, 1) = "Rachel" Our_Array(2, 1) = "Ross" Our_Array(3, 1) = "Joey" Our_Array(1, 2) = 25 Our_Array(2, 2) = 26 Our_Array(3, 2) = 25 ReDim Preserve Our_Array(1 To 3, 1 To 3) Our_Array(1, 3) = "Texas" Our_Array(2, 3) = "Mississippi" Our_Array(3, 3) = "Utah" Our_Array =Application.Transpose(Our_Array) ReDim Preserve Our_Array(1 To 3, 1 To 4) Our_Array = Application.Transpose(Our_Array) Our_Array(4, 1) = "Monica" Our_Array(4, 2) = 26 Our_Array(4, 3) = "New Mexico" Range("C6:E9").Value = Our_Array End Sub
Ανάλυση κώδικα VBA
- Πρώτον, καλούμε το Υποδιαδικασία " ReDim_Preserve_2D_Array_Both_Dimensions ".
- Στη συνέχεια, οι υπόλοιποι κωδικοί μέχρι το VBA Transpose είναι τα ίδια με τον πρώτο κώδικα.
- Εδώ, αντιμεταθέτουμε τον πίνακα.
- Τότε, αυξάνουμε το άνω όριο του πίνακα.
- Μετά από αυτό, μεταθέτουμε ξανά τον πίνακα. Επομένως, τελικά θα αλλάξει το κατώτερο όριο.
- Στη συνέχεια, εισάγουμε τις τιμές για τον πίνακα με το νέο μέγεθος, διατηρώντας παράλληλα τα παλιά δεδομένα.
- Τέλος, γράφουμε τις τιμές στην περιοχή κελιών C6:E9 .
- Μετά από αυτό, όπως φαίνεται στην πρώτη μέθοδο , Εκτέλεση αυτόν τον κωδικό.
- Έτσι, μπορούμε να απεικονίσουμε πώς ο κώδικας διατηρεί ένα 2D συστοιχία χρησιμοποιώντας το " ReDim Preserve " και το VBA Transpose λειτουργία.
Διαβάστε περισσότερα: VBA για την αντιμετάθεση συστοιχίας στο Excel (3 μέθοδοι)
Πράγματα που πρέπει να θυμάστε
- ReDim Preserve δεν μπορούμε να αλλάξουμε το κάτω όριο του πίνακα. Για να το κάνουμε αυτό, πρέπει να χρησιμοποιήσουμε την εντολή Transpose λειτουργία.
- Μπορούμε να χρησιμοποιήσουμε μόνο ReDim σε δυναμικούς πίνακες.
Συμπέρασμα
Σας δείξαμε δύο γρήγορους τρόπους για να " ReDim Preserve " a 2D array στο Excel VBA. Εάν αντιμετωπίζετε προβλήματα σχετικά με αυτές τις μεθόδους ή έχετε οποιαδήποτε σχόλια για μένα, μη διστάσετε να σχολιάσετε παρακάτω. Επιπλέον, μπορείτε να επισκεφθείτε τον ιστότοπό μας ExcelWIKI για περισσότερα άρθρα σχετικά με το Excel. Ευχαριστώ για την ανάγνωση, συνεχίστε να διαπρέπετε!