Post by Mauro Furlanettograzie mille casanmaner ! non ci ho capito nulla ma funziona ! ho copiato il codice
Private Sub Workbook_Open()
With Me
With .Worksheets("Foglio1")
.Protect Password:="741963", UserInterfaceOnly:=True
.EnableSelection = xlUnlockedCells
End With
End With
End Sub
in ThisWorkbook e tutto va a meraviglia ..........purtroppo nn ho capito neanche l'ultima parte nella quale mi suggerisci di creare una costante ma ci arroverò ....con calma :)
a dirla tutta è un mesetto che cerco e provo , avevo provato anche a registrare una macro proteggendo il foglio ma nn sono arrivato a nulla !
non importa ogni cosa a suo tempo grazie ancora e a presto perchè la voglia di provare nn mi manca e sicuramente mi imbatterò in altri problemi !
Per quanto riguarda il capire qualcosa prova a digitare F1 (tasto istruzioni) dopo aver fatto in modo che il cursore del mouse si trovi all'interno di un metodo o una proprietà. Ti si apriranno le istruzioni (purtroppo le ultime versioni solo on line è in inglese).
Ad esempio per Protect in relazione al paramentro UserInterfaceOnly viene specificato che "Se ha valore True, la protezione verrà applicata all'interfaccia utente ma non alle macro. Se questo argomento viene omesso, verranno protette sia le macro che l'interfaccia utente."
Dove l'interfaccia utente in pratica e il foglio di lavoro dove agisce l'utente.
Qui il solito file di esempio dove nel modulo1 ho inserito una procedura che protegge tutti i fogli presenti e la cartella di lavoro.
Ho dichiarato una costante pubblica PW="12345" che viene utilizzata nelle varie righe di comando Protect e Unprotect.
La routine Proteggi viene lanciata all'apertura del file tramite l'evento Private Sub Workbook_Open() come precedente esempio (solo che invece di avere il codice da eseguire viene richimata la routine che lo contiene.
E' presente una routine Sproteggi che fa l'esatto contrario e cioé sprotegge tutti i fogli presenti e la cartella di lavoro.
Inoltre vedrai che nel foglio1 non è più presente il pulsante (dell'altro topic).
Ma se provi a inserire, tramite l'elenco a discesa presente, Femmina o Maschio (o cella vuota) vedrai che il risultato sarà lo stesso (ho aggiunto che se la cella è vuota vengono cancellate sia A3 che A4.
Per vedere come ho fatto ciò vai nel progetto VBA nel modulo del foglio1 (per andarci direttamente fai click destro sulla scheda del Foglio1 e seleziona Visualizza codice).
Giusto per farti vedere quante cose si possono fare con il VBA :-)
Ci va un po' di calma ma a mio parere basta capire una regola semplice e cioé che si tratta di una programmazione ad oggetti e ogni oggetto ha dei metodi (o azioni che si possono compiere) e delle proprietà.
Excel è un oggetto e ha i suoi metodi (azioni) e proprietà.
La cartella di lavoro è un oggetto e ha i suoi metodi e proprità.
Il foglio di lavoro è un oggetto con propri metodi e proprietà
La cella (range) è un oggetto anche lui con propri metodi e proprietà.
E via discorrendo (grafici, userform, ecc. ecc.).
Ad esempio in una macro scrivi ThisWorkbook e poi il punto (ThisWorkbook.)
Vedrai che si aprirà un elenco dei metodi e proprietà dell'oggetto ThisWorkbook che altro non è che la cartella di lavoro su cui stai operando
Fai lo stesso con Foglio1. e vedrai l'elenco dei metodi e proprietà del foglio di lavoro.
Qui il link al file di esempio
https://www.dropbox.com/s/q5b5lf1ocodjgwq/Esempio%20Mauro%20Furlanetto.xlsm?dl=0