Boa tarde.
Edson, grato por seu retorno.
Talvez eu tenha sido um pouco sucinto na informação, causando a impressão que simplesmente bloquear e proteger resolveria, mas a situação vai mais além.
A planilha é protegida e todas as células são bloqueadas, entretanto, algumas células devem ser editadas e outras, com as formulas, que não podem ser editadas, para a edição de cada célula ou intervalo, vai solicitar ao usuário para inserir uma senha para liberar a edição desta célula, após a inserção do dado a célula fica novamente bloqueada, com isso eu preciso que as células com formulas e dados fixos não possam ser acessadas. Certamente o usuário que necessitar inserir dados em mais de uma célula, e sendo estas adjacentes, selecionará um intervalo, nesse momento é que poderá selecionar uma célula indevida e apagar uma formula, causando erro.
Esse código funciona para células isoladas, em intervalos não funciona, também não consigo descrever todas as células restritas individualmente, pois o número de argumentos excede o máximo permitido, por isso estão agrupadas em intervalos.
Ao mostrar o código, ele não mostra os argumentos todos, seria assim:
Public Sub AcessoRestrito()
' Desabilita a atualização da tela
'Application.ScreenUpdating = False
' Determina as células restritas
For Each k In Range("B1:G2,C5:C7,B28:G30,B41:G43,B54:H56,B72:F76,B79:E87,B93:E105,E2:F72")
lCelselec2 = Selection.Address
If Not Intersect(k, Selection) Is Nothing Then
If lCelselec2 = k.Address Then
MsgBox "Você não pode selecionar a célula " & k.Address & ", selecione outro intervalo.", vbCritical, "Controle de Gastos"
Range("A1").Select
GoTo Vai:
End If
End If
Next k
Call AlteraClick
Vai:
lCelselec2 = ""
' Habilita a atualização da tela
'Application.ScreenUpdating = True
End Sub
Este post foi modificado 2 anos atrás 4 vezes por
boobymcgee
Postado : 31/08/2022 5:12 pm