Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Grazie davvero per la spiegazione. Sei stato davvero gentilissimo e chiarissimo.
Per quanto riguarda il convalida dati, purtroppo sono già abbastanza intrecciato con il convalida dati INDIRETTO(), e nonostante i tentativi non ho ancora trovato soluzione valida, perciò volevo procedere con macro o foglio protetto.
Non vorrei approfittare troppo della tua bontà, ma posso chiederti di aggiungere qualcosa alla macro che:
- nel caso cambiassi l'opzione SI o NO nella cella di "controllo", mi cancelli il contenuto della cella che poi va ad essere "protetta" ovvero che non solo la blocchi, ma ne cancelli anche il contenuto di quello che vi era scritto dentro eventualmente. Ovviamente la procedura dovrebbe essere reversibile con un ctrl-z (sbaglio o spesso quando si fa girare una macro non è più possibile ritornare indietro, oppure questo non funziona con una private sub?)
- Limitare l'intera colonna ad un range che potrebbe essere E5:E.
Grazie tantissimo.
Non ho capito a cosa ti riferirsci con *convalida dati indiretto*.
Prova questo:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Set rng = Me.Range("E5:G10")
If Target.Cells.Count < 1 Or Not Intersect(Target, rng) Is Nothing Then
With Target
Select Case .Column
Case 6
If UCase(.Offset(0, -1).Value) = "SI" Then
.Offset(0, 1).Select
'.Value = ""
End If
Case 7
If UCase(.Offset(0, -2).Value) = "NO" Then
.Offset(0, -1).Select
'.Value = ""
End If
Case 5
If UCase(.Value) = "NO" Then
.Offset(0, 1).Value = ""
ElseIf UCase(.Value) = "SI" Then
.Offset(0, 2).Value = ""
End If
End Select
End With
End If
Set rng = Nothing
End Sub
Qui considero il Range E5:G10. Ci sono due commenti. Prova a toglierli e a vedere quale soluzione preferisci.
Una volta eseguito del codice, non hai la possibilità di *tornare indietro*. Dovresti gestire tu il *prima ed il dopo*. Non è così semplice.