Η μακροεντολή που παρουσιάζεται εδώ είναι ένας εξαιρετικός τρόπος για την προστασία των χρηστών από το να κλείσουν ακούσιο το αρχείο τους πριν την αποθήκευση. Όταν υλοποιείται, αυτή η μακροεντολή διασφαλίζει ότι το Excel αποθηκεύει αυτόματα το βιβλίο εργασίας πριν το κλείσει.
Το Excel θα προειδοποιεί κανονικά τους χρήστες που προσπαθούν να κλείσουν ένα μη αποθηκευμένο βιβλίο εργασίας, δίνοντάς τους μια επιλογή αποθήκευσης πριν από το κλείσιμο. Ωστόσο, πολλοί χρήστες μπορεί να ξεπεράσουν την προειδοποίηση και να κάνουν ακούσια κλικ στο Όχι, λέγοντας στο Excel να κλείσει χωρίς αποθήκευση. Με αυτήν τη μακροεντολή, προστατεύεστε από αυτό με αυτόματη αποθήκευση πριν από το κλείσιμο.
Πώς λειτουργεί η μακροεντολή
Ο κώδικας ενεργοποιείται από το συμβάν BeforeClose του βιβλίου εργασίας. Όταν προσπαθείτε να κλείσετε το βιβλίο εργασίας, αυτό το συμβάν ενεργοποιείται, εκτελώντας τον κώδικα μέσα. Η ουσία του κώδικα είναι απλή — ρωτά τους χρήστες εάν θέλουν να κλείσουν το βιβλίο εργασίας. Στη συνέχεια, η μακροεντολή αξιολογεί εάν ο χρήστης έκανε κλικ στο OK ή στο Cancel.
Το μήνυμα που βλέπετε όταν προσπαθείτε να κλείσετε το βιβλίο εργασίας.
Η αξιολόγηση γίνεται με δήλωση Select Case. Η πρόταση Select Case είναι μια εναλλακτική της πρότασης If-Then-Else, η οποία σας επιτρέπει να πραγματοποιείτε ελέγχους συνθηκών στις μακροεντολές σας. Η βασική κατασκευή μιας πρότασης Select Case είναι απλή:
Επιλέξτε Περίπτωση
Περίπτωση Είναι =
Υπόθεση Is=
Υπόθεση Is=
Τέλος Επιλογή
Με μια δήλωση Select Case, μπορείτε να εκτελέσετε πολλούς ελέγχους υπό όρους. Σε αυτήν την περίπτωση, απλώς ελέγχετε για ΟΚ ή Ακύρωση. Ρίξτε μια ματιά στον κωδικό:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
«Βήμα 1: Ενεργοποιήστε το πλαίσιο μηνύματος και ξεκινήστε τον έλεγχο
Επιλέξτε Case MsgBox ("Αποθήκευση και κλείσιμο;", vbOKCancel)
«Βήμα 2: Πατήθηκε το κουμπί ακύρωσης, οπότε ακυρώστε το κλείσιμο
Case Is = vbCancel
Ακύρωση = Αληθινό
«Βήμα 3: Το κουμπί OK πατήθηκε, επομένως αποθηκεύστε το βιβλίο εργασίας και κλείστε
Case Is = vbOK
ActiveWorkbook.Save
'Βήμα 4: Κλείστε τη δήλωση Select Case
Τέλος Επιλογή
End Sub
Στο Βήμα 1, ενεργοποιείτε το πλαίσιο μηνύματος ως έλεγχο συνθήκης για τη δήλωση Select Case. Χρησιμοποιείτε το όρισμα vbOKCancel για να διασφαλίσετε ότι τα κουμπιά OK και Cancel παρουσιάζονται ως επιλογές.
Στο Βήμα 2, εάν ο χρήστης έκανε κλικ στο Cancel στο πλαίσιο μηνύματος, η μακροεντολή λέει στο Excel να ακυρώσει το συμβάν Workbook_Close μεταβιβάζοντας το True στο Cancel Boolean.
Εάν ο χρήστης έκανε κλικ στο κουμπί OK στο πλαίσιο μηνύματος, το Βήμα 3 τίθεται σε ισχύ. Εδώ, λέτε στο Excel να αποθηκεύσει το βιβλίο εργασίας. Και επειδή δεν ρυθμίσατε το Cancel Boolean σε True, το Excel συνεχίζει με το κλείσιμο.
Στο Βήμα 4, απλώς κλείνεις τη δήλωση Select Case. Κάθε φορά που δημιουργείτε μια θήκη επιλογής, πρέπει να την κλείνετε με μια αντίστοιχη επιλογή τερματισμού.
Πώς να χρησιμοποιήσετε τη μακροεντολή
Για να εφαρμόσετε αυτήν τη μακροεντολή, πρέπει να την αντιγράψετε και να την επικολλήσετε στο παράθυρο κώδικα συμβάντος Workbook_BeforeClose. Η τοποθέτηση της μακροεντολής εκεί της επιτρέπει να εκτελείται κάθε φορά που προσπαθείτε να κλείσετε το βιβλίο εργασίας:
Ενεργοποιήστε το Visual Basic Editor πατώντας Alt+F11.
Στο παράθυρο του έργου, βρείτε το όνομα του έργου/του βιβλίου εργασίας σας και κάντε κλικ στο σύμβολο συν δίπλα του για να δείτε όλα τα φύλλα.
Κάντε κλικ στο This Workbook.
Στην αναπτυσσόμενη λίστα Συμβάν, επιλέξτε το συμβάν BeforeClose.
Πληκτρολογήστε ή επικολλήστε τον κωδικό στη μονάδα που δημιουργήθηκε πρόσφατα.
Εισαγάγετε τον κωδικό σας στο συμβάν Bookbook BeforeClose.