Allora, supponiamo che la richiesta sia:
-in un'area definita, es I6:I18..
-..se una cella gia' compilata viene compilata con un nuovo valore...
-..allora il nuovo valore deve essere rifiutato e il rifiuto segnalato con un messaggio di errore.
In questo caso potrebbe funzionare la seguente macro:
- Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ckArea As String, ncVal, ccAdr As String
'
ckArea = "I6:I13" '<<< L'area in cui eseguire il controllo
If Target.Count = 1 And Not Application.Intersect(Target, Range(ckArea)) Is Nothing Then
If Target.Value <> "" Then
Application.EnableEvents = False
ncVal = Target.Value
ccAdr = ActiveCell.Address
Application.Undo
If Target.Value <> "" Then
MsgBox ("La cella contiene gia' una prenotazione") '<<< Il msg che preferisci
'Call AltraMacro '<<< Oppure "chiama altra macro"
Target.Offset(1, 0).Select
Else
Target.Value = ncVal
Range(ccAdr).Select
End If
Application.EnableEvents = True
End If
End If
End Sub
Il codice va sempre inserito "modulo vba" del foglio su cui lavori, in sostituzione di quanto suggerito nel mio post precedente.
Se questo non coincide con quanto avevi in mente allora e' meglio che descrivi "che cosa" vuoi realizzare, non "come hai pensato" di realizzarlo.
Ciao