Un metodo alternativo a quello semplice semplice proposto da Ricky (vedi sopra) potrebbe essere di applicare sulle celle con formule una convalida un po' restrittiva, ma sempre insieme a una macro.
1. Seleziona tutte le celle del foglio contenenti una formula (F5; premi Speciale, spunta Formule, Ok)
2. Applica una convalida: consenti = Decimale, uguale a, valore =3799,91; come messaggio di input e di output inserisci "Formula, non toccare"
Gia' in questo modo il contenuto delle celle non puo' essere sostituito con altro contenuto, salvo col numero 3799,91 (che spero non sia la costante piu' importante nel tuo progetto).
Puo' pero' ancora essere cancellato, e questo lo evitiamo con questa macro:
- Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Dim uYes As Boolean, myCell As Range
For Each myCell In Target
cvf = ""
On Error Resume Next
cvf = myCell.Validation.Formula1
On Error GoTo 0
If cvf <> "" And myCell.Value = "" Then
uYes = True
Exit For
End If
Next myCell
If uYes Then
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End If
End Sub
Pero' le celle possono ancora essere "distrutte" con un copia /incolla che cancellasse anche la Convalida, e questo lo evitiamo con questa seconda macro:
- Codice: Seleziona tutto
Public pePPa As String 'RIGOROSAMENTE in cima al Modulo
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Application.CutCopyMode Then
For Each mygcell In Target
For Each myCell In mygcell.Resize(Range(pePPa).Rows.Count, Range(pePPa).Columns.Count)
If Left(myCell.Formula, 1) = "=" Then
uYes = True
Exit For
End If
Next myCell
If uYes Then Exit For
Next mygcell
Else
pePPa = Selection.Address
End If
If uYes Then
Application.CutCopyMode = False
Application.EnableEvents = True
End If
End Sub
Ambedue le macro vanno inserite nel "Modulo di classe" del foglio di lavoro che vuoi proteggere; inserisci per prima la seconda macro che ti ho dato (per avere Public pePPa As String in testa al modulo).
Per accedere al Modulo di classe: tasto dx sul tab col nome del foglio, scegli Visualizza codice.
Ora le celle possono ancora essere distrutte ma, forse e' piu' facile eliminare l'intero foglio, cosa che si puo' prevenire proteggendo la "Struttura" della cartella di lavoro (Menu /Revisione /Proteggi cartella di lavoro).
Ora il file puo' ancora essere cancellato dal disco, cosa che si puo' prevenire staccando preventivamente la corrente al pc.
Per dire che si puo' continuare a lungo, ma contro i malintezionati c'e' poco da fare.
Spero di non avervi annoiato oltre le mie intenzioni...