Ο καλύτερος οδηγός VBA (για αρχάριους) που θα χρειαστείτε ποτέ

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

Αυτός ο οδηγός VBA για αρχάριους θα σας δείξει πώς να προσθέσετε το μενού Developer στην εφαρμογή του (Developer)Office , πώς να εισέλθετε στο παράθυρο επεξεργασίας VBA και πώς λειτουργούν οι βασικές δηλώσεις και βρόχοι (VBA)VBA , ώστε να μπορείτε να ξεκινήσετε να χρησιμοποιείτε το VBA στο Excel , Word , Powerpoint , Outlook και OneNote .

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

Πώς να ενεργοποιήσετε και να χρησιμοποιήσετε τον επεξεργαστή VBA(How To Enable & Use The VBA Editor)

Σε οποιοδήποτε από τα προϊόντα του Office που χρησιμοποιούνται σε αυτόν τον οδηγό, μπορεί να παρατηρήσετε ότι δεν έχετε το αναφερόμενο μενού προγραμματιστή . (Developer)Το μενού προγραμματιστή είναι διαθέσιμο μόνο σε Excel , Word , Outlook και Powerpoint . Το OneNote(OneNote) δεν προσφέρει ένα εργαλείο για την επεξεργασία του κώδικα VBA από το εσωτερικό της εφαρμογής, αλλά μπορείτε ακόμα να αναφέρετε το OneNote API για να αλληλεπιδράσετε με το OneNote από άλλα προγράμματα του Office

Θα μάθετε πώς να το κάνετε αυτό στον επερχόμενο οδηγό Advanced VBA .

  • Για να ενεργοποιήσετε το μενού Προγραμματιστής(Developer) σε οποιοδήποτε προϊόν γραφείου, επιλέξτε το μενού Αρχείο(File) και επιλέξτε Επιλογές(Options) από το αριστερό μενού πλοήγησης. 
  • Θα δείτε ένα αναδυόμενο μενού Επιλογές . (Options)Επιλέξτε Προσαρμογή κορδέλας(Customize Ribbon) από το αριστερό μενού πλοήγησης.

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

  • Θα πρέπει να δείτε το Developer στη λίστα στα δεξιά, αλλά δεν θα ενεργοποιηθεί. Απλώς(Just) επιλέξτε το πλαίσιο ελέγχου για να ενεργοποιήσετε το μενού Προγραμματιστής .(Developer)

  • Εάν δεν βλέπετε τον προγραμματιστή(Developer) διαθέσιμο στα δεξιά, αλλάξτε το αριστερό Επιλογή εντολών(Choose commands) από το αναπτυσσόμενο μενού σε Όλες οι εντολές(All Commands) . Βρείτε τον προγραμματιστή(Developer) από τη λίστα και επιλέξτε Add>> στο κέντρο για να προσθέσετε αυτό το μενού στην Κορδέλα(Ribbon) .
  • Επιλέξτε OK όταν τελειώσετε.
  • Μόλις ενεργοποιηθεί το μενού Προγραμματιστής(Developer) , μπορείτε να επιστρέψετε στο κύριο παράθυρο της εφαρμογής σας και να επιλέξετε Προγραμματιστής(Developer) από το επάνω μενού. 
  • Στη συνέχεια, επιλέξτε Προβολή κώδικα(View Code) από την ομάδα Controls στην κορδέλα για να ανοίξετε το παράθυρο του προγράμματος επεξεργασίας VBA .

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

  • Δοκιμάστε να προσθέσετε το μενού Προγραμματιστής(Developer) σε μερικές από τις εφαρμογές του Office που χρησιμοποιείτε καθημερινά. Μόλις ανοίξετε άνετα το παράθυρο του προγράμματος επεξεργασίας VBA , συνεχίστε στην επόμενη ενότητα αυτού του οδηγού.

Γενικές συμβουλές προγραμματισμού VBA για αρχάριους(General VBA Programming Tips for Beginners)

Θα παρατηρήσετε όταν ανοίξει το πρόγραμμα επεξεργασίας VBA , οι επιλογές πλοήγησης στον αριστερό πίνακα φαίνονται διαφορετικές από τη μία εφαρμογή του Office στην άλλη.

Αυτό συμβαίνει επειδή τα διαθέσιμα αντικείμενα στα οποία μπορείτε να τοποθετήσετε κώδικα VBA εξαρτώνται από τα αντικείμενα που υπάρχουν στην εφαρμογή. Για παράδειγμα, στο Excel , μπορείτε να προσθέσετε κώδικα VBA σε αντικείμενα βιβλίου εργασίας ή φύλλου. Στο Word , μπορείτε να προσθέσετε κώδικα VBA σε έγγραφα. (VBA)Στο Powerpoint , μόνο σε λειτουργικές μονάδες.

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

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

Πού να τοποθετήσετε τον κώδικα VBA(Where To Put VBA Code)

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

Για παράδειγμα, στο Excel , εάν επιλέξετε Φύλλο εργασίας(Worksheet) και Ενεργοποίηση(Activate) , ο κώδικας θα εκτελείται κάθε φορά που ανοίγει το φύλλο εργασίας. 

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

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

Δηλώσεις VBA IF(VBA IF Statements)

Μια δήλωση IF λειτουργεί στο VBA όπως ακριβώς λειτουργεί σε οποιαδήποτε άλλη γλώσσα προγραμματισμού.

Το πρώτο μέρος της δήλωσης IF εξετάζει εάν μια συνθήκη ή ένα σύνολο συνθηκών είναι αληθής. Αυτές οι συνθήκες μπορούν να ενωθούν από έναν τελεστή AND ή OR για να τις συνδέσει μεταξύ τους.

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

If Cells(2, 2) > 75 Then Cells(2, 3) = “Pass” Else Cells(2, 3) = “Fail”

Εάν δεν θέλετε ολόκληρη η πρόταση σε μία γραμμή, μπορείτε να τη χωρίσετε σε πολλές γραμμές προσθέτοντας ένα σύμβολο «_» στο τέλος των γραμμών.

If Cells(2, 2) > 75 Then _
Cells(2, 3) = “Pass”  Else _
Cells(2, 3) = “Fail”

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

VBA για τους επόμενους βρόχους(VBA For Next Loops)

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

Σε αυτή την περίπτωση θα χρειαστείτε έναν βρόχο  FOR .

Για να το κάνετε αυτό, θα πρέπει να χρησιμοποιήσετε το μήκος ενός εύρους και να κάνετε βρόχο σε αυτό το μήκος με βάση τον αριθμό των σειρών που περιέχουν δεδομένα.

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

Dim rng ως εύρος, κελί ως εύρος (Dim rng As Range, cell As Range)
Dim rowcounter ως ακέραιος(Dim rowCounter as Integer)

Ορίστε το μέγεθος εύρους ως εξής. 

Set rng = Range(“B2:B7”)
rowCounter = 2

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

For Each cell In rng
   If cell.Value > 75 Then _
   Cells(rowCounter, 3) = "Pass" Else _
   Cells(rowCounter, 3) = "Fail"

   rowCounter = rowCounter + 1

Next cell

Μόλις εκτελεστεί αυτό το σενάριο VBA(VBA script) , βλέπετε τα αποτελέσματα στο πραγματικό υπολογιστικό φύλλο.

VBA while Loops

Ο βρόχος(Loop) while κάνει επίσης βρόχο μέσω μιας σειράς εντολών, ακριβώς όπως ο βρόχος FOR , αλλά η συνθήκη του βρόχου για συνέχιση είναι μια συνθήκη που παραμένει αληθής.

Για παράδειγμα, θα μπορούσατε να γράψετε τον ίδιο βρόχο FOR παραπάνω, ως βρόχο WHILE , χρησιμοποιώντας απλώς τη μεταβλητή rowCounter ως εξής.

While rowCounter < rng.Count + 2
   If Cells(rowCounter, 2) > 75 Then _
   Cells(rowCounter, 3) = "Pass" Else _
   Cells(rowCounter, 3) = "Fail"
   rowCounter = rowCounter + 1
Wend

Σημείωση: Απαιτείται το όριο τερματισμού rng.Count + 2 επειδή ο μετρητής σειρών ξεκινά από το 2 και πρέπει να τελειώνει στη σειρά 7 όπου τελειώνουν τα δεδομένα. Ωστόσο, το πλήθος του εύρους (B2:B7) είναι μόνο 6 και ο βρόχος while θα τελειώσει μόνο όταν ο μετρητής γίνει ΜΕΓΑΛΥΤΕΡΟΣ(GREATER) από τον μετρητή – επομένως η τιμή του μετρητή της τελευταίας σειράς πρέπει να είναι 8 (ή rng.Count + 2).

Θα μπορούσατε επίσης να ρυθμίσετε τον βρόχο while ως εξής:

While rowCounter <= rng.Count + 1

Μπορείτε να αυξήσετε μόνο το πλήθος εύρους (6) κατά 1, επειδή μόλις η μεταβλητή rowCounter φτάσει στο τέλος των δεδομένων (σειρά 7), ο βρόχος μπορεί να τελειώσει.

VBA Do while και Do Until Loops(VBA Do While and Do Until Loops)

Οι βρόχοι Do while και Do Until είναι σχεδόν πανομοιότυποι με τους βρόχους while, αλλά λειτουργούν ελαφρώς διαφορετικά.

  • Ο βρόχος(While Loop) while ελέγχει εάν μια συνθήκη είναι αληθής στην αρχή του βρόχου.
  • Ο βρόχος Do-While(Do-While Loop) ελέγχει εάν μια συνθήκη είναι αληθής μετά την εκτέλεση των εντολών στον βρόχο.
  • Ο βρόχος Do-Until(Do-Until Loop) ελέγχει εάν μια συνθήκη εξακολουθεί να είναι ψευδής μετά την εκτέλεση του βρόχου.

Σε αυτήν την περίπτωση, θα ξαναγράψετε τον βρόχο while παραπάνω, ως βρόχο Do-While.

Do
   If Cells(rowCounter, 2) > 75 Then _
   Cells(rowCounter, 3) = "Pass" Else _
   Cells(rowCounter, 3) = "Fail"
   
   rowCounter = rowCounter + 1
Loop While rowCounter < rng.Count + 2

Σε αυτήν την περίπτωση, η λογική δεν αλλάζει πολύ, αλλά αν θέλετε να βεβαιωθείτε ότι η λογική σύγκριση πραγματοποιείται μετά την εκτέλεση όλων των εντολών (επιτρέποντάς τους να εκτελεστούν ανεξάρτητα από το τι γίνεται τουλάχιστον μία φορά), τότε ένα Do-While ή ο βρόχος Do-Until είναι η σωστή επιλογή.

VBA Επιλέξτε δηλώσεις περίπτωσης(VBA Select Case Statements)

Ο τελικός τύπος λογικής δήλωσης που θα πρέπει να κατανοήσετε για να ξεκινήσετε τη δομή του κώδικα VBA σας είναι οι δηλώσεις (VBA)Select Case .

Δεδομένου του παραπάνω παραδείγματος, ας υποθέσουμε ότι θέλετε να έχετε μια μέθοδο βαθμολόγησης που δεν είναι απλώς αποτυχία. Αντίθετα, θέλετε να εκχωρήσετε έναν βαθμό γράμματος από το A έως το F.

Θα μπορούσατε να το κάνετε αυτό με την ακόλουθη δήλωση Select Case :

For Each cell In rng
   
   Select Case cell

   Case 95 To 100
      Cells(rowCounter, 3) = "A"
   Case 85 To 94
      Cells(rowCounter, 3) = "B"
   Case 75 To 84
      Cells(rowCounter, 3) = "C"
   Case 65 To 74
      Cells(rowCounter, 3) = "D"
   Case 0 To 64
      Cells(rowCounter, 3) = "F"
   End Select

   rowCounter = rowCounter + 1

Next cell

Το υπολογιστικό φύλλο που προκύπτει μετά την εκτέλεση αυτού του σεναρίου VBA μοιάζει με το παρακάτω.

Τώρα γνωρίζετε όλα όσα πρέπει να γνωρίζετε για να αρχίσετε να χρησιμοποιείτε το VBA στις εφαρμογές του Microsoft Office .



About the author

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



Related posts