4 λάθη που μπορείτε να αποφύγετε όταν προγραμματίζετε μακροεντολές Excel με VBA

Απλός κώδικας και μακροεντολές είναι τα κλειδιά για τις υπερδυνάμεις του Microsoft Excel. Ακόμα και οι μη προγραμματιστές μπορούν εύκολα να προσθέσουν εντυπωσιακή λειτουργικότητα στα υπολογιστικά φύλλα τους με το Virtual Basics for Applications (VBA). Απλά αποφύγετε αυτά τα λάθη προγραμματισμού για αρχάριους!

Απλός κώδικας και μακροεντολές είναι τα κλειδιά για τις υπερδυνάμεις του Microsoft Excel.  Ακόμα και οι μη προγραμματιστές μπορούν εύκολα να προσθέσουν εντυπωσιακή λειτουργικότητα στα υπολογιστικά φύλλα τους με το Virtual Basics for Applications (VBA).  Απλά αποφύγετε αυτά τα λάθη προγραμματισμού για αρχάριους!
Διαφήμιση

Το Microsoft Excel είναι ήδη ένα πολύ ικανό εργαλείο ανάλυσης δεδομένων, αλλά με τη δυνατότητα αυτοματοποίησης επαναλαμβανόμενων εργασιών με μακροεντολές Πώς να στείλετε μηνύματα ηλεκτρονικού ταχυδρομείου από υπολογιστικό φύλλο Excel Χρησιμοποιώντας δέσμες ενεργειών VBA Πώς να στείλετε μηνύματα ηλεκτρονικού ταχυδρομείου από υπολογιστικό φύλλο Excel Χρησιμοποιώντας δέσμες ενεργειών VBA Θα σας δείξουμε πώς να να ρυθμίσετε τα αυτοματοποιημένα μηνύματα ηλεκτρονικού ταχυδρομείου από το Excel χρησιμοποιώντας τα Collaboration Data Objects (CDO) και τις δέσμες ενεργειών VBA. Τα πρότυπα κωδικών μας κάνουν αυτό πολύ πιο εύκολο από ό, τι ακούγεται! Διαβάστε περισσότερα γράφοντας απλό κώδικα στο (VBA), είναι πολύ πιο ισχυρό. Ωστόσο, που χρησιμοποιούνται εσφαλμένα, η VBA μπορεί να προκαλέσει πολλά προβλήματα.

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

Είτε είστε γκουρού της VBA, ο οποίος δημιουργεί πίνακες εργαλείων στο Excel Δημιουργήστε τον δικό σας Πίνακα ελέγχου καιρού Σε αυτή την κύρια κλάση του Google Spreadsheet Δημιουργήστε τον δικό σας Πίνακα ελέγχου καιρού σε αυτήν την κύρια κατηγορία υπολογιστικών φύλλων του Google Θέλετε να μετατρέψετε το λογαριασμό σας στο Google Drive σε ένα έξυπνο σύστημα ανάλυσης καιρού, και να ζήσετε μια φαντασίωση Star Trek; Εντάξει! Διαβάστε περισσότερα, ή ένας αρχάριος που γνωρίζει μόνο πώς να γράψει απλά σενάρια που κάνουν βασικούς υπολογισμούς κυττάρων, μπορείτε να ακολουθήσετε τις εύκολες τεχνικές προγραμματισμού, οι οποίες θα σας βοηθήσουν να βελτιώσετε τις πιθανότητες γραφής καθαρού και bug-free κώδικα.

Ξεκινώντας με τη VBA

Εάν δεν έχετε προγραμματίσει προηγουμένως στο VBA στο Excel, η ενεργοποίηση των εργαλείων για προγραμματιστές να το κάνει είναι πραγματικά εύκολο. Απλώς πηγαίνετε στο Αρχείο > Επιλογές και στη συνέχεια προσαρμόστε την Κορδέλα . Απλά μετακινήστε την ομάδα εντολών προγραμματιστή από το αριστερό παράθυρο προς τα δεξιά.

excel-vba1

Βεβαιωθείτε ότι το πλαίσιο ελέγχου είναι ενεργοποιημένο και τώρα η καρτέλα Προγραμματιστής θα εμφανιστεί στο μενού του Excel.

excel-vba2

Ο ευκολότερος τρόπος να εισέλθετε στο παράθυρο του επεξεργαστή κώδικα σε αυτό το σημείο είναι απλώς να κάνετε κλικ στο κουμπί Προβολή κωδικού κάτω από το Controls στο μενού Developer.

1. Φρικτές μεταβλητές ονομασίες

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

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

  • Κάντε τους όσο το δυνατόν συντομότερα.
  • Κάντε τους όσο το δυνατόν πιο περιγραφικούς.
  • Εισαγάγετε τους με μεταβλητό τύπο (boolean, integer, etc ...).
  • Θυμηθείτε να χρησιμοποιήσετε το σωστό πεδίο εφαρμογής (βλ. Παρακάτω).

Εδώ είναι ένα στιγμιότυπο οθόνης από ένα πρόγραμμα που χρησιμοποιώ συχνά για να κάνετε WMIC κλήσεις των Windows από το Excel για τη συλλογή πληροφοριών PC Πώς να δείτε όλες τις πληροφορίες του υπολογιστή σας χρησιμοποιώντας ένα απλό Excel VBA Script Πώς να δείτε όλες τις πληροφορίες του υπολογιστή σας χρησιμοποιώντας ένα απλό Excel VBA Script Excel και 10 λεπτά εργασίας θα σας δώσει πιο λεπτομερείς πληροφορίες σχετικά με τον υπολογιστή σας από ό, τι σκεφτήκατε ποτέ. Ακούγεται πολύ καλό για να είναι αλήθεια; Αυτό είναι τα Windows, αν ξέρετε πώς να το χρησιμοποιήσετε. Διαβάστε περισσότερα .

excel-vba3

Όταν θέλετε να χρησιμοποιήσετε τις μεταβλητές εντός οποιασδήποτε συνάρτησης εντός της μονάδας ή του αντικειμένου (θα το εξηγήσω παρακάτω), τότε θα πρέπει να την δηλώσετε ως μια "δημόσια" μεταβλητή προωθώντας τη δήλωση με το Δημόσιο . Διαφορετικά, οι μεταβλητές δηλώνονται με την εισαγωγή τους με τη λέξη Dim .

Όπως μπορείτε να δείτε, αν η μεταβλητή είναι ένας ακέραιος αριθμός, προφέρεται με int . Αν είναι μια συμβολοσειρά, τότε η σελίδα str . Αυτό βοηθά αργότερα κατά το προγραμματισμό, γιατί πάντα θα ξέρετε ποιος είναι ο τύπος δεδομένων που διατηρεί η μεταβλητή, απλά κοιτάζοντας το όνομα. Θα παρατηρήσετε επίσης ότι αν υπάρχει κάτι σαν μια συμβολοσειρά που περιέχει ένα όνομα υπολογιστή, τότε η μεταβλητή ονομάζεται strComputerName .

Αποφύγετε να κάνετε πολύ περίπλοκα ή συγχέοντας μεταβλητά ονόματα που μόνο εσείς καταλαβαίνετε. Κάνε ευκολότερο για έναν άλλο προγραμματιστή να έρθει πίσω σου και να καταλάβεις τι σημαίνει όλα!

Ένα άλλο λάθος που κάνουν οι άνθρωποι είναι να αφήνουν ονόματα φύλλων ως το προεπιλεγμένο "Φύλλο1", "Φύλλο2", κλπ ... Αυτό προσθέτει περαιτέρω σύγχυση σε ένα πρόγραμμα. Αντ 'αυτού, ονομάστε τα φύλλα έτσι ώστε να έχουν νόημα.

excel-vba4

Με αυτό τον τρόπο, όταν ανατρέχετε στο όνομα φύλλου στον κώδικα VBA του Excel Χρησιμοποιώντας το VBA για να αυτοματοποιήσει τις περιόδους λειτουργίας του Internet Explorer Από ένα υπολογιστικό φύλλο Excel Χρησιμοποιώντας το VBA για την αυτοματοποίηση των περιόδων σύνδεσης του Internet Explorer Από ένα υπολογιστικό φύλλο Excel Η ενσωμάτωση του με τα Windows επιτρέπει τον έλεγχο του Internet Explorer σε έναν αριθμό εκπληκτικούς τρόπους χρησιμοποιώντας δέσμη ενεργειών Visual Basic for Applications (VBA) από οποιαδήποτε εφαρμογή που υποστηρίζει, όπως το Word, το Outlook ή το Excel. Διαβάστε περισσότερα, αναφέρεστε σε ένα όνομα που έχει νόημα. Στο παραπάνω παράδειγμα, έχω ένα φύλλο όπου τραβήξω πληροφορίες δικτύου, οπότε καλώ το φύλλο "Δίκτυο". Τώρα στον κώδικα, κάθε φορά που θέλω να αναφερθώ στο φύλλο του Δικτύου, μπορώ να το κάνω γρήγορα χωρίς να αναρωτηθώ ποιος αριθμός φύλλου είναι.

2. Breaking Instead of Looping

Ένα από τα πιο κοινά προβλήματα νεότερος προγραμματιστής έχει 6 συνήθειες ζωής που ο προγραμματισμός θα μπορούσε να σας διδάξει σήμερα 6 συνήθειες ζωής που ο προγραμματισμός θα μπορούσε να σας διδάξει σήμερα Όλα τα σημαντικά που πρέπει να ξέρετε για να ζήσετε μια επιτυχημένη ζωή, μπορείτε να πάρετε από ένα πρόγραμμα υπολογιστή. Μη με πιστέψεις; Συνέχισε να διαβάζεις. Διαβάστε περισσότερα όταν αρχίζουν να γράφουν κώδικα αντιμετωπίζει σωστά τους βρόχους. Και δεδομένου ότι τόσοι πολλοί άνθρωποι που χρησιμοποιούν Excel VBA είναι πολύ νέοι κώδικες, η κακή looping είναι επιδημία.

Το Looping είναι πολύ συνηθισμένο στο Excel επειδή συχνά επεξεργάζεστε τις τιμές των δεδομένων κάτω από μια ολόκληρη σειρά ή μια στήλη, οπότε πρέπει να βρόχο για να επεξεργαστείτε όλα αυτά. Οι νέοι προγραμματιστές συχνά θέλουν απλά να ξεφύγουν από ένα βρόχο (είτε ένα For loop είτε ένα Look While) αμέσως όταν μια συγκεκριμένη προϋπόθεση είναι αληθινή.

excel-vba5

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

For x = 1 To 20 If x = 6 Then Exit For y = x + intRoomTemp Next i 

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

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

 While (x>=1 AND x<=20 AND x6) For x = 1 To 20 y = x + intRoomTemp Next i Wend 

Αυτό επιτρέπει μια λογική ροή του κώδικα σας, με την τελευταία διαδρομή, όταν το x είναι 5, και στη συνέχεια έξοδο με χάρη όταν ο βρόχος For υπολογίζει μέχρι 6. Δεν χρειάζεται να συμπεριλάβετε τις άβολες εντολές EXIT ή BREAK mid-loop.

3. Δεν χρησιμοποιείτε πίνακες

Ένα άλλο ενδιαφέρον λάθος που οι νέοι προγραμματιστές VBA Τα βασικά του προγραμματισμού υπολογιστών 101 - Μεταβλητές και τύποι δεδομένων Τα βασικά του προγραμματισμού υπολογιστών 101 - Μεταβλητές και τύποι δεδομένων Έχοντας εισαγάγει και μίλησε λίγο για τον αντικειμενοστραφή προγραμματισμό πριν και από πού προέρχεται το ομώνυμο, σκέφτηκα ότι ήρθε η ώρα να περάσουν από τα απόλυτα βασικά του προγραμματισμού σε έναν μη γλωσσικό συγκεκριμένο τρόπο. Αυτό το ... Διαβάστε περισσότερα κάνει προσπαθεί να επεξεργαστεί τα πάντα μέσα από πολλούς ένθετους βρόχους που φιλτράρονται κάτω από σειρές και στήλες κατά τη διάρκεια της διαδικασίας υπολογισμού.

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

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

πάγος-δίσκοι

Μπορείτε εύκολα να ορίσετε έναν πίνακα μόνο πληκτρολογώντας το Dim arrMyArray (12) ως ακέραιο .

Αυτό δημιουργεί ένα "δίσκο" με 12 διαθέσιμες υποδοχές για να γεμίσετε.

Εδώ είναι τι μπορεί να μοιάζει ένας κώδικας βρόχου σειράς χωρίς πίνακα:

 Sub Test1() Dim x As Integer intNumRows = Range("A2", Range("A2").End(xldown)).Rows.Count Range("A2").Select For x = 1 To intNumRows If Range("A" & str(x)).value< 100 then intTemp = (Range("A" & str(x)).value) * 32 - 100 End If ActiveCell.Offset(1, 0).Select Next End Sub 

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

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

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

 Sub Test1() Dim x As Integer intNumRows = Range("A2", Range("A2").End(xldown)).Rows.Count Range("A2").Select For x = 1 To intNumRows arrMyArray(x-1) = Range("A" & str(x)).value) ActiveCell.Offset(1, 0).Select Next End Sub 

Το "x-1" για την επισήμανση του στοιχείου πίνακα είναι απαραίτητο μόνο επειδή ο βρόχος For ξεκινά από το 1. Τα στοιχεία του Array πρέπει να ξεκινούν από το 0.

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

 Sub TempCalc() For x = 0 To UBound(arrMyArray) arrMyTemps(y) = arrMyArray(x) * 32 - 100 Next End Sub 

Αυτό το παράδειγμα περνάει από ολόκληρη τη συστοιχία γραμμών (το UBound σας δίνει τον αριθμό των τιμών δεδομένων στον πίνακα), κάνει τον υπολογισμό της θερμοκρασίας και στη συνέχεια το τοποθετεί σε έναν άλλο πίνακα που ονομάζεται arrMyTemps.

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

4. Χρησιμοποιώντας πάρα πολλές αναφορές

Είτε προγραμματίζετε σε πλήρες Visual Basic είτε VBA, θα πρέπει να συμπεριλάβετε "αναφορές" για την πρόσβαση σε συγκεκριμένες λειτουργίες, όπως πρόσβαση σε βάση δεδομένων της Access ή εγγραφή εξόδου σε αρχείο κειμένου.

Οι αναφορές είναι σαν "βιβλιοθήκες" γεμάτες με λειτουργίες στις οποίες μπορείτε να πατήσετε, εάν ενεργοποιήσετε αυτό το αρχείο. Μπορείτε να βρείτε Αναφορές στην προβολή Προγραμματιστής κάνοντας κλικ στο Εργαλεία στο μενού και στη συνέχεια κάντε κλικ στην επιλογή Αναφορές .

excel-vba6

Αυτό που θα βρείτε σε αυτό το παράθυρο είναι όλες οι τρέχουσες επιλεγμένες αναφορές για το τρέχον έργο VBA.

excel-vba7

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

Ο λόγος που είναι καλό να ελέγξετε αυτή τη λίστα είναι επειδή περιττές αναφορές πόρων του συστήματος αποβλήτων. Εάν δεν χρησιμοποιείτε χειρισμό αρχείων XML, τότε γιατί να διατηρείτε την XML XML επιλεγμένη; εάν δεν επικοινωνείτε με μια βάση δεδομένων, αφαιρέστε το Microsoft DAO. Εάν δεν εγγράφετε έξοδο σε ένα αρχείο κειμένου, αφαιρέστε το Microsoft Scripting Runtime .

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

excel-vba8

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

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

excel-vba9

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

Προγραμματισμός στο Excel VBA

Η όλη ιδέα της πραγματικής γραφής κώδικα στο Excel Εξοικονόμηση χρόνου με λειτουργίες κειμένου στο Excel Εξοικονόμηση χρόνου με λειτουργίες κειμένου στο Excel Το Excel μπορεί να κάνει μαγεία με αριθμούς και μπορεί να χειριστεί τους χαρακτήρες εξίσου καλά. Αυτό το εγχειρίδιο παρουσιάζει τον τρόπο ανάλυσης, μετατροπής, αντικατάστασης και επεξεργασίας κειμένου σε υπολογιστικά φύλλα. Αυτά τα βασικά θα σας επιτρέψουν να εκτελέσετε σύνθετους μετασχηματισμούς. Διαβάστε περισσότερα φοβίζει πολλούς ανθρώπους, αλλά αυτός ο φόβος δεν είναι πραγματικά απαραίτητος. Η Visual Basic for Applications είναι μια πολύ απλή γλώσσα που μπορείτε να μάθετε και εάν ακολουθείτε τις βασικές κοινές πρακτικές που αναφέρονται παραπάνω, θα διασφαλίσετε ότι ο κωδικός σας είναι καθαρός, αποτελεσματικός και εύκολος στην κατανόηση.

Κωδικοποιείτε στο VBA; Τι είδους μαθήματα έχετε μάθει μέσα από τα χρόνια που μπορείτε να μοιραστείτε με άλλους αναγνώστες που μαθαίνουν τη VBA για πρώτη φορά; Μοιραστείτε τις συμβουλές σας στην παρακάτω ενότητα σχολίων!

Εικόνες πιστώσεων: Υπολογιστής από www.BillionPhotos.com μέσω Shutterstock, πολύχρωμους δίσκους πάγου cube από hahauk μέσω Shutterstock.com

In this article