Λίστα αντικειμένων VBA | Οδηγός για ListObject Excel Tables στο Excel VBA

Τι είναι το ListObjects στο VBA;

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

Το VBA ListObject είναι ένας τρόπος αναφοράς στους πίνακες excel ενώ γράφετε τον κώδικα VBA. Χρησιμοποιώντας τα VBA LISTOBJECTS μπορούμε να δημιουργήσουμε, να διαγράψουμε πίνακα και συνολικά μπορούμε να παίξουμε με πίνακες excel στον κώδικα VBA. Οι πίνακες Excel είναι δύσκολοι, αρχάριοι, ακόμη και σε κάποιο βαθμό, οι χρήστες ενδιάμεσου επιπέδου δυσκολεύονται να εργαστούν με πίνακες. Δεδομένου ότι αυτό το άρθρο μιλά για την αναφορά πινάκων excel στην κωδικοποίηση VBA, είναι καλύτερα να έχετε καλές γνώσεις σχετικά με πίνακες στο excel.

Όταν τα δεδομένα μετατρέπονται σε πίνακες, δεν δουλεύουμε πλέον με μια σειρά κελιών, αλλά πρέπει να εργαζόμαστε με εύρη πινάκων, οπότε σε αυτό το άρθρο, θα σας δείξουμε πώς να εργαστείτε με πίνακες excel για να γράφετε αποτελεσματικά κωδικούς VBA.

Δημιουργία μορφής πίνακα χρησιμοποιώντας ListObjects στο Excel VBA

Για παράδειγμα, δείτε τα παρακάτω δεδομένα excel.

Χρησιμοποιώντας τον κώδικα VBA ListObject θα δημιουργήσουμε μια μορφή πίνακα για αυτά τα δεδομένα.

Μπορείτε να κάνετε λήψη αυτού του προτύπου VBA ListObjects Excel εδώ - Πρότυπο VBA ListObjects Excel
  • Για αυτά τα δεδομένα πρώτα πρέπει να βρούμε ποια είναι η τελευταία γραμμή και στήλη που χρησιμοποιήθηκε, οπότε ορίστε δύο μεταβλητές για να το βρείτε.

Κώδικας:

 Sub List_Objects_Example1 () Dim LR As Long Dim LC ως Long End Sub 

  • Για να βρείτε την τελευταία γραμμή και στήλη χρησιμοποιήστε τον παρακάτω κωδικό.

Κώδικας:

LR = Κελιά (Rows.Count, 1). End (xlUp). Row LC = Cells (1, Columns.Count). End (xlToLeft). Column

  • Τώρα ορίστε μια ακόμη μεταβλητή για να διατηρήσετε την αναφορά των δεδομένων.

Κώδικας:

 Dim Rng ως εύρος 

  • Τώρα ορίστε την αναφορά σε αυτήν τη μεταβλητή χρησιμοποιώντας τον παρακάτω κώδικα.

Κώδικας:

 Ορισμός Rng = Κελιά (1, 1). Αλλαγή μεγέθους (LR, LC)

Τώρα πρέπει να χρησιμοποιήσουμε τη μέθοδο VBA "ListObject.Add" για να δημιουργήσουμε έναν πίνακα και παρακάτω είναι η σύνταξη του ίδιου.

ListObject.Add (Πηγή, XlListObjectHasHeaders, Destination, TableStyleName)

Πηγή: Αυτό δεν είναι τίποτα για ποια περιοχή κελιών εισάγουμε τον πίνακα. Έτσι μπορούμε να παρέχουμε δύο επιχειρήματα εδώ, δηλαδή "xlSrcRange" και "xlSrcExternal".

XlListObjectHasHeaders: Εάν ο πίνακας που εισάγει δεδομένα έχει κεφαλίδες ή όχι. Εάν ναι μπορούμε να παρέχουμε "xlYes" αν όχι μπορούμε να παρέχουμε "xlNo".

Προορισμός: Αυτό δεν είναι παρά το εύρος δεδομένων μας.

Στυλ πίνακα: Εάν θέλετε να εφαρμόσετε οποιοδήποτε στυλ πίνακα μπορούμε να παρέχουμε στυλ.

  • Εντάξει, τώρα στο ενεργό φύλλο δημιουργούμε τον πίνακα, οπότε παρακάτω ο κώδικας θα δημιουργούσε έναν πίνακα για εμάς.

Κώδικας:

 Dim Ws As Set Sheet Works Ws = ActiveSheet Ws.ListObjects.Add xlSrcRange, xllistobjecthasheaders: = xlΝαι, Προορισμός: = Rng

  • Μετά από αυτό, πρέπει να δώσουμε ένα όνομα σε αυτόν τον πίνακα.

Κώδικας:

Ws.ListObjects (1) .name = "EmpTable"

  • Παρακάτω είναι ο πλήρης κωδικός για την αναφορά σας.

Κώδικας:

 Sub List_Objects_Example1 () Dim LR As Long Dim LC As Long LR = Cells (Rows.Count, 1). End (xlUp). Row LC = Cells (1, Columns.Count). End (xlToLeft). Column Dim Rng ως εύρος Ορισμός Rng = Κελιά (1, 1). Αλλαγή μεγέθους (LR, LC) Dim Ws As Worksheet Set Ws = ActiveSheet Ws.ListObjects.Add xlSrcRange, xllistobjecthasheaders: = xlYes, Destination: = Rng Ws.ListObjects (1) .name = " EmpTable "End Sub 

Εντάξει, ας τρέξουμε τον κώδικα και να δούμε τη μαγεία.

Δημιούργησε τον πίνακα στα αναφερόμενα δεδομένα και έδωσε το όνομα του πίνακα ως "EmpTable" .

Μορφοποίηση πινάκων Excel με VBA ListObjects

Μόλις δημιουργηθεί ο πίνακας Excel, μπορούμε να εργαστούμε με πίνακες χρησιμοποιώντας τη συλλογή vba ListObject.

  • Αρχικά, ορίστε τη μεταβλητή ως "ListObject".

Κώδικας:

 Sub List_Objects_Example2 () Dim MyTable ως ListObject End Sub 

  • Τώρα ορίστε την αναφορά σε αυτήν τη μεταβλητή χρησιμοποιώντας το όνομα του πίνακα.

Κώδικας:

 Sub List_Objects_Example2 () Dim MyTable ως ListObject Set MyTable = ActiveSheet.ListObjects ("EmpTable") End Sub 

Τώρα η μεταβλητή "MyTable" κρατά την αναφορά για τον πίνακα "EmpTable".

  • Εισαγάγετε το όνομα της μεταβλητής και τοποθετήστε μια τελεία για να δείτε τις ιδιότητες και τις μεθόδους του VBA ListObject.

Για παράδειγμα, εάν θέλουμε να επιλέξουμε ολόκληρο τον πίνακα τότε πρέπει να χρησιμοποιήσουμε το αντικείμενο "Range" και κάτω από αυτό, πρέπει να χρησιμοποιήσουμε τη μέθοδο "Select".

Κώδικας:

MyTable.Range.Select

Αυτό θα επέλεγε ολόκληρο τον πίνακα δεδομένων, συμπεριλαμβανομένης της επικεφαλίδας.

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

Κώδικας:

MyTable.DataBodyRange. Επιλέξτε

Έτσι, μπορούμε να παίξουμε με τραπέζια.

  • Παρακάτω είναι η λίστα των κωδικών δραστηριότητας για την αναφορά σας.

Κώδικας:

 Sub List_Objects_Example2 () Dim MyTable As ListObject Set MyTable = ActiveSheet.ListObjects ("EmpTable") MyTable.DataBodyRange.Select 'Για να επιλέξετε εύρος δεδομένων χωρίς κεφαλίδες MyTable.Range.Select' Για να επιλέξετε εύρος δεδομένων με κεφαλίδες MyTable.HeaderRowRange.Select ' Επιλέξτε σειρές κεφαλίδας πίνακα MyTable.ListColumns (2). Range.Select 'Για να επιλέξετε στήλη 2 συμπεριλαμβανομένης της κεφαλίδας MyTable.ListColumns (2). DataBodyRange.Select' Για να επιλέξετε στήλη 2 χωρίς κεφαλίδα End Sub 

Έτσι, μπορούμε να χρησιμοποιήσουμε τη συλλογή "ListObject" για να παίξουμε με τραπέζια excel.

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

  • Το VBA ListObject είναι η συλλογή αντικειμένων για αναφορά σε πίνακες excel.
  • Για να αποκτήσετε πρόσβαση στη συλλογή ListObject πρώτα πρέπει να καθορίσετε ποιο φύλλο εργασίας αναφέρεται.