1. Όπως φαίνεται ξεκίνησες τα πειράματα, οπότε καλή αρχή!
2. Όταν βλέπεις συνάρτηση με αγκύλες στην αρχή και στο τέλος σημαίνει ότι είναι συνάρτηση-πίνακας (array formulas). Επίσης, κάποιοι τις αποκαλούν και συναρτήσεις
CSE από τα αρχικά των λέξεων
Control+Shift+Enter. Αυτό σημαίνει ότι μόλις ολοκληρώσεις την σύνταξή της, θα πρέπει να πατήσεις Ctrl+Shift+Enter και όχι μόνο το Enter για να λειτουργήσει σωστά. Μόλις πατήσεις
Control+Shift+Enter, οι αγκύλες θα μπόυν αυτόματα για να δηλώσουν ότι η συνάρτηση "αναβαθμίστηκε" σε συνάρτηση πίνακα.
3. Αφού άλλαξε η μορφή του ημερολογίου στο φύλλο ΔΟΚΙΜΗ, προφανώς θα πρέπει να προσαρμοστεί ανάλογα και ο κώδικας. Βλέπω ότι δημιούργησες νέα ονόματα (IANDOKIMH, MARTIOSDOKIMH). Ένα δείγμα κώδικα για τη δικιά σου μορφοποίηση είναι ο παρακάτω:
Κώδικας:
Sub ClearMonths()
If MsgBox("Να γίνει καθαρισμός του ημερολογίου;", vbQuestion + vbYesNo + vbDefaultButton2, _
ΚΑΘΑΡΙΣΜΟΣ") = vbNo Then Exit Sub
Range("IANDOKIMH").Offset(1, 0).Resize(Range("IANDOKIMH").Rows.Count - 2, Range("IANDOKIMH").Columns.Count).ClearContents
Range("MARTIOSDOKIMH").Offset(1, 0).Resize(Range("MARTIOSDOKIMH").Rows.Count - 2, Range("MARTIOSDOKIMH").Columns.Count).ClearContents
End Sub
Κάποιες φορές η ονοματολογία στα εύρη παίζει καθοριστικό ρόλο έτσι ώστε ο κώδικας να είναι όσο γίνεται πιο συνοπτικός και κατανοητός.
4. Όταν δημιουργείς νέο όνομα για ένα εύρος κελιών (παράθυρο Νέο Όνομα) στο πεδίο Εύρος επέλεξε το συγκεκριμένο φύλλο που θα αναφέρεται και όχι το βιβλίο εργασίας. Έτσι όταν δημιουργείς νέο φύλλο από αντιγραφή-επικόλληση του παλιού φύλλου, θα δημιουργθεί νέο όνομα για το αντίστοιχο εύρος στο νέο φύλλο.
5. Όπως ανέφερα και πιο πάνω στο
3., η ονοματολογία παίζει καθοριστικό ρόλο στον κώδικα. Αν π.χ. είχες 50 πίκανες να καθαρίσεις, με τον δικό μου τρόπο ονοματολογίας θα είχες δυο-τρεις γραμμές κώδικα (For...Next) ενώ με τον δικό σου 50 γραμμές! Όπως καταλαβαίνεις, γι' αυτό το λόγο έβαλα αριθμούς στο τέλος των ορισμάτων ώστε να εκμεταλλευτώ την εντολή επανάληψης.
6. Πριν την τροποποίηση των κελιών, θα πρέπει να σιγουρευτείς ότι το φύλλο δεν έχει προστασία. Σ' ένα φύλλο όλα τα κελιά εξ' ορισμού είναι κλειδωμένα, δηλαδή η ιδιότητά τους Locked είναι True. Τα ξεκλειδώνεις θέτοντάς την σε False. Σύμφωνα λοιπόν με τα παραπάνω, τροποποίησε τον παρακάτω κώδικα όπως σε βολεύει:
Κώδικας:
ActiveSheet.Unprotect 'Βγάζεις την προστασία από το φύλλο
Range("A5,A18,A31").Locked = False 'Ξεκλειδώνεις τα κελιά με False, τα κλειδώνεις με True
ActiveSheet.Protect 'Βάζεις την προστασία στο φύλλο