Μερικές φορές, μπορεί να θέλετε να διαγράψετε όλα εκτός από το ενεργό φύλλο εργασίας σε ένα βιβλίο εργασίας του Excel. Σε αυτές τις περιπτώσεις, μπορείτε να χρησιμοποιήσετε την ακόλουθη μακροεντολή.
Πώς λειτουργεί η μακροεντολή
Η μακροεντολή εδώ περνά μέσα από τα φύλλα εργασίας, αντιστοιχίζοντας το όνομα κάθε φύλλου εργασίας με το όνομα του ενεργού φύλλου. Κάθε φορά που επαναλαμβάνεται η μακροεντολή, διαγράφει οποιοδήποτε φύλλο εργασίας που δεν ταιριάζει. Σημειώστε τη χρήση της ιδιότητας DisplayAlerts στο Βήμα 4. Αυτό ουσιαστικά απενεργοποιεί τις προειδοποιήσεις του Excel, ώστε να μην χρειάζεται να επιβεβαιώσετε κάθε διαγραφή.
Sub Macro1()
'Βήμα 1: Δηλώστε τις μεταβλητές σας
Dim ws As φύλλο εργασίας
'Βήμα 2: Ξεκινήστε να επαναλαμβάνετε όλα τα φύλλα εργασίας
Για κάθε ws In ThisWorkbook.Φύλλα εργασίας
«Βήμα 3: Ελέγξτε το όνομα κάθε φύλλου εργασίας
Αν ws.Name <> This Workbook.ActiveSheet.Name then
«Βήμα 4: Απενεργοποιήστε τις προειδοποιήσεις και διαγράψτε
Application.DisplayAlerts = False
ws.Διαγραφή
Application.DisplayAlerts = True
Τέλος εαν
'Βήμα 5: Κάντε βρόχο στο επόμενο φύλλο εργασίας
Επόμενα ws
End Sub
Η μακροεντολή δηλώνει πρώτα ένα αντικείμενο που ονομάζεται ws. Αυτό το βήμα δημιουργεί ένα κοντέινερ μνήμης για κάθε φύλλο εργασίας μέσα από το οποίο πραγματοποιεί βρόχο.
Στο Βήμα 2, η μακροεντολή αρχίζει να κάνει βρόχο, λέγοντας στο Excel ότι θα αξιολογήσει όλα τα φύλλα εργασίας σε αυτό το βιβλίο εργασίας. Υπάρχει διαφορά μεταξύ ThisWorkbook και ActiveWorkbook. Το αντικείμενο ThisWorkBook αναφέρεται στο βιβλίο εργασίας που περιέχει τον κώδικα. Το αντικείμενο ActiveWorkBook αναφέρεται στο τρέχον ενεργό βιβλίο εργασίας. Συχνά επιστρέφουν το ίδιο αντικείμενο, αλλά αν το βιβλίο εργασίας που εκτελεί τον κώδικα δεν είναι το ενεργό βιβλίο εργασίας, επιστρέφουν διαφορετικά αντικείμενα. Σε αυτήν την περίπτωση, δεν θέλετε να διακινδυνεύσετε να διαγράψετε φύλλα σε άλλα βιβλία εργασίας, επομένως χρησιμοποιείτε το ThisWorkBook.
Στο Βήμα 3, η μακροεντολή απλώς συγκρίνει το όνομα του ενεργού φύλλου με το φύλλο που βρίσκεται σε βρόχο αυτήν τη στιγμή.
Στο Βήμα 4, εάν τα ονόματα των φύλλων είναι διαφορετικά, η μακροεντολή διαγράφει το φύλλο. Όπως αναφέρθηκε, χρησιμοποιείτε το DisplayAlerts για να καταργήσετε τυχόν ελέγχους επιβεβαίωσης από το Excel. Εάν θέλετε να λαμβάνετε προειδοποίηση πριν διαγράψετε τα φύλλα, μπορείτε να παραλείψετε την Εφαρμογή. DisplayAlerts = False. Η παράλειψη της δήλωσης DisplayAlerts θα διασφαλίσει ότι εμφανίζεται το μήνυμα, επιτρέποντάς σας να αποχωρήσετε από την απόφαση διαγραφής φύλλων εργασίας.
Στο Βήμα 5, η μακροεντολή επανέρχεται για να πάρει το επόμενο φύλλο. Αφού αξιολογηθούν όλα τα φύλλα, η μακροεντολή τελειώνει.
Παραλείψτε τη δήλωση DisplayAlerts για να δείτε προειδοποιητικά μηνύματα.
Πώς να χρησιμοποιήσετε τη μακροεντολή
Για να εφαρμόσετε αυτήν τη μακροεντολή, μπορείτε να την αντιγράψετε και να την επικολλήσετε σε μια τυπική λειτουργική μονάδα:
Ενεργοποιήστε το Visual Basic Editor πατώντας Alt+F11.
Κάντε δεξί κλικ στο όνομα του έργου/του βιβλίου εργασίας στο παράθυρο του έργου.
Επιλέξτε Εισαγωγή→ Μονάδα.
Πληκτρολογήστε ή επικολλήστε τον κωδικό στη μονάδα που δημιουργήθηκε πρόσφατα.
Όταν χρησιμοποιείτε το ThisWorkbook αντί για το ActiveWorkbook σε μια μακροεντολή, δεν μπορείτε να εκτελέσετε τη μακροεντολή από το προσωπικό βιβλίο εργασίας μακροεντολής. Γιατί; Επειδή το ThisWorkbook θα αναφέρεται στο βιβλίο εργασίας της προσωπικής μακροεντολής, όχι στο βιβλίο εργασίας στο οποίο θα πρέπει να ισχύει η μακροεντολή.