Τι είναι ένας πίνακας VBA στο Excel και πώς να προγραμματίσετε ένα

Το VBA(VBA) είναι μέρος της σουίτας του Microsoft Office εδώ και πολλά χρόνια. Αν και δεν έχει την πλήρη λειτουργικότητα και δύναμη μιας πλήρους εφαρμογής VB, η VBA παρέχει στους χρήστες του Office την ευελιξία να ενσωματώνουν προϊόντα του (Office)Office και να αυτοματοποιούν την εργασία που κάνετε σε αυτά.

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

Τι είναι λοιπόν ένας πίνακας VBA ; Σε αυτό το άρθρο θα απαντήσουμε σε αυτήν την ερώτηση και θα σας δείξουμε πώς να χρησιμοποιήσετε ένα στο δικό σας σενάριο VBA(your own VBA script) .

Τι είναι ένας πίνακας VBA;

Η χρήση ενός πίνακα VBA στο (VBA)Excel είναι πολύ απλή, αλλά η κατανόηση της έννοιας των συστοιχιών μπορεί να είναι λίγο περίπλοκη εάν δεν έχετε χρησιμοποιήσει ποτέ έναν.

Σκεφτείτε(Think) έναν πίνακα σαν ένα κουτί με τμήματα μέσα του. Ένας μονοδιάστατος πίνακας είναι ένα πλαίσιο με μία γραμμή τμημάτων. Ένας δισδιάστατος πίνακας είναι ένα κουτί με δύο γραμμές τμημάτων.

Μπορείτε να βάλετε δεδομένα σε κάθε ενότητα αυτού του "κουτιού" με όποια σειρά θέλετε.

Στην αρχή του σεναρίου VBA , πρέπει να ορίσετε αυτό το "πλαίσιο" ορίζοντας τον πίνακα VBA . Έτσι, για να δημιουργήσετε έναν πίνακα που μπορεί να χωρέσει ένα σύνολο δεδομένων (έναν πίνακα μιας διάστασης), θα γράψετε την ακόλουθη γραμμή.

Dim arrMyArray(1 To 6) As String

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

arrMyArray(1) = "Ryan Dube"

Μπορείτε να δημιουργήσετε έναν δισδιάστατο πίνακα χρησιμοποιώντας την παρακάτω γραμμή.

Dim arrMyArray(1 To 6,1 to 2) As Integer

Ο πρώτος αριθμός αντιπροσωπεύει τη γραμμή και ο δεύτερος είναι η στήλη. Έτσι, ο παραπάνω πίνακας θα μπορούσε να περιέχει ένα εύρος με 6 σειρές και 2 στήλες.

Μπορείτε να φορτώσετε οποιοδήποτε στοιχείο αυτού του πίνακα με δεδομένα ως εξής.

arrMyArray(1,2) = 3

Αυτό θα φορτώσει ένα 3 στο κελί B1.

Ένας πίνακας μπορεί να κρατήσει οποιοδήποτε τύπο δεδομένων ως κανονική μεταβλητή, όπως συμβολοσειρές, boolean, ακέραιους αριθμούς, floats και άλλα.

Ο αριθμός μέσα στην παρένθεση μπορεί επίσης να είναι μεταβλητή. Οι προγραμματιστές χρησιμοποιούν συνήθως έναν βρόχο(Loop) For για να μετρήσουν όλα τα τμήματα ενός πίνακα και να φορτώσουν κελιά δεδομένων στο υπολογιστικό φύλλο στον πίνακα. Θα δείτε πώς να το κάνετε αυτό αργότερα σε αυτό το άρθρο.

Πώς να προγραμματίσετε έναν πίνακα VBA στο Excel

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

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

Σημειώστε ότι στο VBA όταν αναφέρετε σειρές ή στήλες, μετράτε σειρές και στήλες(rows and columns) ξεκινώντας από το 1 επάνω αριστερά. Άρα η στήλη rep είναι 3, η στήλη στοιχείου είναι 4 και η συνολική στήλη είναι 7.

Για να φορτώσετε αυτές τις τρεις στήλες και στις 11 σειρές, θα χρειαστεί να γράψετε το ακόλουθο σενάριο.

Dim arrMyArray(1 To 11, 1 To 3) As String
Dim i As Integer, j As Integer
For i = 2 To 12
For j = 1 To 3
arrMyArray(i-1, j) = Cells(i, j).Value
Next j
Next i

Θα παρατηρήσετε ότι για να παραλείψετε τη σειρά κεφαλίδας, ο αριθμός της σειράς στο πρώτο For look πρέπει να ξεκινά από το 2 και όχι από το 1. Αυτό σημαίνει ότι πρέπει να αφαιρέσετε 1 για την τιμή της σειράς πίνακα όταν φορτώνετε την τιμή του κελιού στον πίνακα χρησιμοποιώντας κελιά(Cells) (i, j).Τιμή.

Πού να εισαγάγετε το σενάριο VBA Array(Your VBA Array Script)

Για να τοποθετήσετε μια δέσμη ενεργειών VBA στο (VBA)Excel , πρέπει να χρησιμοποιήσετε το πρόγραμμα επεξεργασίας VBA . Μπορείτε να αποκτήσετε πρόσβαση σε αυτό επιλέγοντας το μενού Προγραμματιστής και επιλέγοντας (Developer)Προβολή κώδικα(View Code) στην ενότητα Στοιχεία ελέγχου(Controls) της κορδέλας.

Εάν δεν βλέπετε τον Προγραμματιστή(Developer) στο μενού, θα πρέπει να τον προσθέσετε. Για να το κάνετε αυτό, επιλέξτε Αρχείο(File) και Επιλογές(Options) για να ανοίξετε το παράθυρο Επιλογές του Excel.

Αλλάξτε τις εντολές επιλογής από το αναπτυσσόμενο μενού σε Όλες οι εντολές(All Commands) . Επιλέξτε Προγραμματιστής(Developer) από το αριστερό μενού και επιλέξτε το κουμπί Προσθήκη(Add) για να το μετακινήσετε στο παράθυρο στα δεξιά. Επιλέξτε το πλαίσιο ελέγχου για να το ενεργοποιήσετε και επιλέξτε OK για να ολοκληρώσετε.

Όταν ανοίξει το παράθυρο του Code Editor , βεβαιωθείτε ότι το φύλλο στο οποίο βρίσκονται τα δεδομένα σας είναι επιλεγμένο στο αριστερό παράθυρο. Επιλέξτε Φύλλο εργασίας(Worksheet) στο αριστερό αναπτυσσόμενο μενού και Ενεργοποίηση(Activate) στα δεξιά. Αυτό θα δημιουργήσει μια νέα υπορουτίνα που ονομάζεται Worksheet_Activate ().

Αυτή η λειτουργία θα εκτελείται κάθε φορά που ανοίγει το αρχείο υπολογιστικού φύλλου. Επικολλήστε τον κώδικα στο παράθυρο σεναρίου μέσα σε αυτήν την υπορουτίνα.

Αυτό το σενάριο θα λειτουργήσει στις 12 σειρές και θα φορτώσει το όνομα του αντιπροσώπου από τη στήλη 3, το στοιχείο από τη στήλη 4 και τη συνολική πώληση από τη στήλη 7.

Μόλις ολοκληρωθούν και οι δύο βρόχοι For, ο δισδιάστατος πίνακας arrMyArray περιέχει όλα τα δεδομένα που καθορίσατε από το αρχικό φύλλο.

Χειρισμός συστοιχιών στο Excel VBA

Ας υποθέσουμε ότι θέλετε να εφαρμόσετε φόρο επί των πωλήσεων 5% σε όλες τις τελικές τιμές πώλησης και, στη συνέχεια, να γράψετε όλα τα δεδομένα σε ένα νέο φύλλο.

Μπορείτε να το κάνετε αυτό προσθέτοντας έναν άλλο βρόχο For μετά τον πρώτο, με μια εντολή εγγραφής των αποτελεσμάτων σε ένα νέο φύλλο.

For k = 2 To 12
Sheets("Sheet2").Cells(k, 1).Value = arrMyArray(k - 1, 1)
Sheets("Sheet2").Cells(k, 2).Value = arrMyArray(k - 1, 2)
Sheets("Sheet2").Cells(k, 3).Value = arrMyArray(k - 1, 3)
Sheets("Sheet2").Cells(k, 4).Value = arrMyArray(k - 1, 3) * 0.05
Next k

Αυτό θα "ξεφορτώσει" ολόκληρο τον πίνακα στο Φύλλο2(Sheet2) , με μια πρόσθετη σειρά που περιέχει το σύνολο πολλαπλασιασμένο επί 5% για το ποσό του φόρου.

Το φύλλο που προκύπτει θα μοιάζει με αυτό.

Όπως μπορείτε να δείτε, οι πίνακες VBA στο (VBA)Excel είναι εξαιρετικά χρήσιμοι και τόσο ευέλικτοι όσο κάθε άλλο κόλπο του Excel(any other Excel trick)

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

Εάν θέλετε να γίνετε πραγματικός δημιουργικός, θα μπορούσατε ακόμη και να δημιουργήσετε δύο πίνακες που περιέχουν μια σειρά κελιών(containing a range of cells) από δύο διαφορετικά φύλλα και να εκτελέσετε υπολογισμούς μεταξύ των στοιχείων κάθε πίνακα.

Οι εφαρμογές περιορίζονται μόνο από τη φαντασία σας.



About the author

"Είμαι ανεξάρτητος ειδικός στα Windows και στο Office. Έχω πάνω από 10 χρόνια εμπειρίας στην εργασία με αυτά τα εργαλεία και μπορώ να σας βοηθήσω να αξιοποιήσετε στο έπακρο. Οι δεξιότητές μου περιλαμβάνουν: εργασία με Microsoft Word, Excel, PowerPoint και Outlook, δημιουργία ιστού σελίδες και εφαρμογές και βοηθώντας τους πελάτες να επιτύχουν τους επιχειρηματικούς τους στόχους."



Related posts