Acho que seria um pouco radical a solução de bloquear as células assim que elas fossem preenchidas. Sugiro que, ao salvar a Pasta de Trabalho, que as células preenchidas sejam bloqueadas, e as em branco, livres. Adicione o código abaixo na classe da Pasta
de Trabalho:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Altere os valores abaixo para atender sua necessidade:
Const sNomePlanilha As String = "Plan1"
Const sSenha As String = "senha"
Dim rUso As Range
With Sheets(sNomePlanilha)
If ActiveSheet.Name = sNomePlanilha Then
.Unprotect sSenha
On Error Resume Next
Set rUso = .UsedRange.SpecialCells(xlCellTypeFormulas)
If rUso Is Nothing Then
Set rUso = .UsedRange.SpecialCells(xlCellTypeConstants)
End If
Set rUso = Union(rUso, .UsedRange.SpecialCells(xlCellTypeConstants))
On Error GoTo 0
.Cells.Locked = False
If Not rUso Is Nothing Then
rUso.Locked = True
End If
End If
.Protect sSenha
End With
End Sub
Felipe Costa Gualberto - http://www.ambienteoffice.com.br