Na pressa para arrumar uma solução eu optaria por uma dessas soluções paliativas:
- Replicar a planilha:
A primeira planilha buscaria os dados da fonte de dados e a segunda buscaria os dados da primeira. Esta segunda você poderia bloquear e a primeira poderia ser ocultada.
- VBA (Evento Worksheet_SelectionChange)
Caso o usuario selecione uma celula que não possa ser alterada, ele redireciona para outra célula. Utilizei SELECT CASE apenas para representar.
Ex:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Select Case Target.Address
Case "$C$8"
Range("A1").Select
Case "$F$9"
End Select
End Sub
- VBA (Evento Worksheet_SelectionChange + Evento Worksheet_Change)
Quando o usuário selecionar a célula, o conteúdo será armazenado em uma variável publica. Caso ele tente alterar o conteúdo da celula, o evento CHANGE seria ativado e retornaria o valor original armazenado anteriormente.
Ex:
Public conteudo, retornarvalor
Private Sub Worksheet_Change(ByVal Target As Range)
If retornarvalor = True Then
retornarvalor = False
If Target.Address = "$F$7" Then: Target = conteudo
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
retornarvalor = True
conteudo = Target.Formula
End Sub
Postado : 20/11/2013 1:25 pm