Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   [VBA] Δεν δουλέυει κώδικας όταν ενεργοποιώ την προστασία του φύλλου. (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/4951-den-doyleyei-kodikas-otan-energopoio-tin-prostasia-toy-filloy.html)

smasak 16-07-18 20:45

Δεν δουλέυει κώδικας όταν ενεργοποιώ την προστασία του φύλλου.
 
Χρησιμοποιώ αυτό τον κώδικα "Columns("M:O").Hidden = False" για απόκρυψη κάποιων κελιών.
Όταν όμως βάζω προστασία φύλλου μου βγάζει μήνυμα "δεν είναι δυνατός ο ορισμός της ιδιότητας hidden από την κλάση range".

Spirosgr 16-07-18 22:16

Η προστασία του φύλλου, απαγορεύει στον κώδικα να εκτελεστεί.
Βάλε:
Sheet1.Unprotect
στην αρχή

....κώδικας

Sheet1.Protect
στο τέλος

όπου Sheet1, το κωδικό όνομα του φύλλου.

smasak 17-07-18 07:51

Μου βγάζει μήνυμα "run-time error 424"

kapetang 17-07-18 10:33

Καλημέρα

Σάκη θα πρότεινα να χρησιμοποιήσεις τον παρακάτω κώδικα:

Κώδικας:

Public Sub HiddenUnHidden()
    If ActiveSheet.ProtectContents Then
        ActiveSheet.Unprotect 'συμπληρώνεται και το password αν το κλείδωμα γίνεται με password
        Columns("M:O").Hidden = Not Columns("M:O").Hidden
        ActiveSheet.Protect  'συμπληρώνεται και το password αν το κλείδωμα γίνεται με password
    Else
        Columns("M:O").Hidden = Not Columns("M:O").Hidden
    End If
End Sub

Ο κώδικας εφαρμόζεται στο ενεργό φύλλο και κάνει τα εξής:

Αν είναι κλειδωμένο
1) Το ξεκλειδώνει για να μπορεί να το αλλάξει.
2) Κρύβει τις στήλες αν φαίνονται ή τις εμφανίζει αν δε φαίνονται.
3) Ξανακλειδώνει το φύλλο.

Αν είναι ξεκλείδωτο
Κρύβει τις στήλες αν φαίνονται ή τις εμφανίζει αν δε φαίνονται.

Spirosgr 17-07-18 11:04

Καλημέρα.
Κατ' αρχάς αναφαίρεις...
«...Χρησιμοποιώ αυτό τον κώδικα "Columns("M:O").Hidden = False"
για απόκρυψη κάποιων κελιών...»

Αυτό εμφανίζει τις στήλες Μ έως Ο και δεν κρύβει κελιά...

Το σφάλμα 424,προκαλείται από κώδικα που παραπέμπει, σε μια ιδιότητα ή μέθοδο,
αλλά δεν συνδέεται με το σωστό αντικείμενο ή δεν μπορεί να εντοπίσει το αντικείμενο.

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

Ακόμα, το πιο πιθανό είναι, να μην έκανες σωστά αυτό που υπέδειξα στο προηγούμενο post.

Επειδή δεν μπορώ να μαντεύω, τι κάνεις με τον κώδικα σου,
ούτε θέλω να υποδείξω έναν κώδικα, χωρίς να έχω εικόνα του έργου,
θα προτείνω τα εξής:

Πήγαινε πίσω στην Vba και δες το κωδικό όνομα του φύλλου που τρέχει ο κώδικας.
πχ Φύλλο1 (Οτιδήποτε) ή Sheet1 (Οτιδήποτε)
Πάρε αυτό το μπλε όνομα και γράψε
στην πρώτη γραμμή, στην αρχή του κώδικα, κάτω από τον τίτλο του πχ
Φύλλο1.Unprotect και
από κάτω στην άλλη γραμμή Φύλλο1.Protect

Άφησε την πρώτη γραμμή στην αρχή του κώδικα, κάτω από τον τίτλο του.
Βάλε την δεύτερη γραμμή στο τέλος του κώδικα, πριν από το End Sub.

Αν ενδιάμεσα στον κώδικα, υπάρχει κάποιος έλεγχος που οδηγεί σε Exit Sub,
τότε βάλε πριν από αυτό ( Exit Sub ) και πάλι το Φύλλο1.Protect

Τρέξε τον κώδικα βηματικά (F8) και δες αν θα χτυπήσει και σε ποιό σημείο.

Τσέκαρε το σφάλμα, και διόρθωσέ το αν μπορείς ή ανέβασέ το να το δω...

* Γραμμές όπως η Columns("M:O").Hidden = False, και άλλες ...
καλό είναι να δένουν με το φύλλο πχ
Φύλλο1.Columns("M:O").Hidden = False

**Το καλύτερο θα ήταν να ανέβαζες τον κώδικα, από την αρχή της συζήτησης...

smasak 17-07-18 11:26

Σπύρο με τον κώδικα που προτείνεις δουλεύει μια χαρά...προφανώς κάτι λάθος έκανα.
Σε ευχαριστώ.

Spirosgr 17-07-18 11:28

Να' σαι καλά, καλημέρα.

smasak 17-07-18 11:49

Σπύρο μάλλον δίνω λάθος τον κώδικα όταν θέλω να βάλω password και δεν δουλεύει...

"ActiveSheet.Unprotect pas123"

kapetang 17-07-18 12:14

Καλησπέρα

Σάκη, επειδή η πρόταση του Σπύρου, δεν περιέχει την εντολή: ActiveSheet.Unprotect
υποθέτω ότι αναφέρεσαι στη δική μου πρόταση και αντί για "Γιώργος" γράφεις "Σπύρος".

Ο σωστός τρόπος να προσθέσεις το password στον κώδικα είναι:

ActiveSheet.Unprotect "pas123"

Αν δε βάλεις το password στον κώδικα πιαθανόν να εμφανιστεί πλαίσιο και να το ζητήσει.

smasak 17-07-18 12:22

Ναι συγνώμη, έτσι είναι Γιώργο...δουλεύει μιά χαρά.
Ευχαριστώ


Η ώρα είναι 11:12.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2