Ο κώδικας VBA δεν λειτουργεί

Έχω τον ακόλουθο κώδικα VBA:

Θέμα

 Ιδιωτικό υποεικόμενο φύλλο εργασίας_Αλλαγή (ByVal στόχος ως εύρος) Dim cRow ως ακέραιος Αν διασταυρώνονται (Target, Range ("R11: R20")) Τίποτα δεν εξέρχεται τότε Sub Target.Value = "F" Then ActiveSheet.Unprotect cRow = Target.Row Range (Κέντρα (cRow, "T"), Κύτταρα (cRow, "U")) Κλειδωμένο = True ActiveSheet.Protect End Αν Αν Target.Value = "T" Ή Target.Value = "Then ActiveSheet.Unprotect cRow = .Row Range (Κύτταρα (cRow, "T"), Κύτταρα (cRow, "U")) Κλειδωμένο = False ActiveSheet.Protect End If End Sub 

Αυτό που χρειάζομαι είναι να ClearContents για (cRow target.Row) στην ανώτερη περίπτωση πρώτα πριν είναι κλειδωμένο.3

  • Έχω το φύλλο του Excel για να υπολογίσω την υπερωρία, περιλαμβάνει αρκετές σειρές για κάθε μήνα και το φύλλο προστατεύεται, αλλά επιτρέποντας στον χρήστη να εισάγει δεδομένα σε κάποιο καθορισμένο εύρος (P11: P20, R11: X20) (Allow user to edit range).
  • Επίσης, το εύρος (R11: R20) είναι σειρές με μενού λίστας με λωρίδες 4 τιμών (1, 2, 3, 4).
  • Η περίπτωση μου: Για παράδειγμα, εάν ο χρήστης επιλέξει είτε την τιμή 3 ή 4 ΜΟΝΟ στο κελί (R15), πρέπει να μπλοκάρει ή να προστατεύει την περιοχή (T15: U15) και αν στη συνέχεια επιλέξει με το ίδιο φύλλο την τιμή 3 ή 4 στο κελί R19 για να προστατεύσετε την περιοχή (T19: U19) και ούτω καθεξής.
  • Επομένως, χρειάζομαι κάποια τιμή που έχει επιλεγεί σε συγκεκριμένο κελί για να προστατεύσει κάποια εύρη εντός της ίδιας σειράς. Λάβετε υπόψη ότι ο χρήστης μπορεί να επιλέξει μία επιλογή ή πολλαπλή επιλογή στο ίδιο φύλλο.

Λύση

Για το τρέχον ερώτημα υποθέσατε ότι θέλετε να καθαρίσετε τα περιεχόμενα της στήλης T και U της γραμμής στόχου.

 Ιδιόμορφη υποθήκη εργασίας_Αλλαγή (ByVal στόχος ως εύρος) Dim cRow ως ακέραιος Αν διασταύρωση (Target, Range ("R11: R20")) Τίποτα δεν εξέρχεται τότε Sub Αν Target.Value = "F" τότε ActiveSheet.Unprotect cRow = Target.Row με Εύρος (κελιά (cRow, "T"), κελιά (cRow, "U")) .ClearContents.Locked = True End με ActiveSheet.Protect End Αν Target.Value = "T" ή Target.Value = .Προστασία cRow = Target.Row Range (Κύτταρα (cRow, "T"), Κύτταρα (cRow, "U")) Κλειδωμένο = False ActiveSheet.Protect End If End Sub 

Χάρη στην TrowaD για αυτή την συμβουλή.

Προηγούμενο Άρθρο Επόμενο Άρθρο

Οι Καλύτερες Συμβουλές