Operazioni da fare:
1) Selezioni tutte le celle del foglio (casella grigia sopra la numerazione 1 della prima riga e a sinistra della lettera A)
2) Menu > Formato -> Celle, Tab protezione, togli l'opzione su bloccata
3) Selezioni la cella M5
4) Menu > Formato -> Celle, Tab protezione, inserisci l'opzione su bloccata
--------
ora in un modulo inserisci questa macro
- Codice: Seleziona tutto
Sub ProtezF()
For RO = 2 To 26
If Range("O" & RO).Value <> 0 Then
ActiveSheet.Unprotect
Exit Sub
End If
Next RO
End Sub
Mentre nel codice del foglio (non modulo)
- Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
CheckAreaO = "O2:O26"
CheckAreaM = "M5"
If Not Application.Intersect(Target, Range(CheckAreaO)) Is Nothing Then
Call ProtezF
End If
If Not Application.Intersect(Target, Range(CheckAreaM)) Is Nothing Then
Range("O2:O26").ClearContents
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
End Sub
L'unica cosa che non mi torna è una tua dichiarazione:
blunotte13 ha scritto:...e quando invece il valore di O26 cambia da nullo ad un valore che viene calcolato da altra operazione...
Spero che "quest'altra" operazione venga fatta anch'essa con una macro o manualmente, perché se all'interno del range "O2:O26" ci sono delle formule, queste saranno cancellate e quindi, le celle, non potranno modificare il loro valore da nulla ad altro valore...
Fai sapere
Ciao