Página 1 de 1

Bloqueando células preenchidas somente depois de salvar

Enviado: 26 Jul 2018 às 11:23
por ArthurPossenti
Bom dia a todos

resolvi criar este tópico pois enfrento um problema com uma planilha.

Tenho uma planilha de registros de atividades que deve ser preenchida de hora em hora, e gostaria que as células quando preenchidas com essas informações fossem bloqueadas para impedirem alterações. Consegui isso aqui no fórum em outros tópicos, porém agora me deparo com outro problema que é recorrente do pessoal me procurando para corrigir valores que foram digitados de forma errada.

gostaria por gentileza que me ajudassem a elaborar um código que faça a mesma coisa, bloquear o acesso a uma célula depois de preenchida, mas as células só seriam bloqueadas após salvar a planilha.

O código que usei inicialmente segue abaixo, porém agora gostaria que as células só fossem ativadas ao salvar a planilha, o que ele não faz....

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If ActiveCell.Value <> “” Then
ActiveSheet.Unprotect
ActiveCell.Locked = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End If

End Sub


Tenho vários controles desse tipo, os dados são registrados de hora em hora, para vários parâmetros, e só preciso bloquear esses valores, o campo de observações não é necessário que seja bloqueado. Segue em anexo um exemplo de planilha para que fique mais fácil comunicação.

Agradeço desde já!!!

Att
Arthur

Re: Bloqueando células preenchidas somente depois de salvar

Enviado: 07 Ago 2018 às 23:34
por ArthurPossenti
Alguém tem alguma solução para isso?

Re: Bloqueando células preenchidas somente depois de salvar

Enviado: 08 Ago 2018 às 08:25
por osvaldomp
Ao salvar o arquivo você quer bloquear as células preenchidas no intervalo B8:Q17 de todas as planilhas do arquivo. É isso?

Bloqueando células preenchidas somente depois de salvar

Enviado: 24 Ago 2018 às 10:58
por ArthurPossenti
Olá Osvaldo

Isso mesmo, ao salvar preciso que fiquem bloqueadas somente as células desse intervalo, as outras podem ser editadas posteriormente, só restringir as desse intervalo mesmo.

muito obrigado

Re: Bloqueando células preenchidas somente depois de salvar

Enviado: 24 Ago 2018 às 13:03
por osvaldomp
Olá, Arthur.
Instale o código abaixo no módulo de EstaPasta_de_trabalho.
O código que você colocou no primeiro post acima não deverá ser utilizado.
Código: Selecionar todos
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
 Dim ws As Worksheet
  For Each ws In ThisWorkbook.Worksheets
   ws.Protect userinterfaceonly:=True
    On Error Resume Next
     ws.Range("B8:Q17").SpecialCells(xlCellTypeConstants, 23).Locked = True
    On Error GoTo 0
  Next ws
End Sub

Bloqueando células preenchidas somente depois de salvar

Enviado: 24 Ago 2018 às 17:55
por ArthurPossenti
Boa tarde Osvaldo, a solução ficou perfeita, era exatamente isso que eu buscava e com certeza atende ao que preciso.

Caso essa planinha for protegida por senha (991234) devo mudar alguma parte do código?

muito obrigado mesmo

Att

Re: Bloqueando células preenchidas somente depois de salvar

Enviado: 24 Ago 2018 às 18:06
por ArthurPossenti
Em outro arquivo que também preciso fazer isso eu preciso colocar esse macro no intervalo C7:V25 e AA7:AJ25.

Para estabelecer o bloqueio preciso colocar entre os parentes os dois intervalos separados por ponto e vírgula ou preciso modificar algo mais?


muito obrigado

Re: Bloqueando células preenchidas somente depois de salvar

Enviado: 24 Ago 2018 às 18:10
por osvaldomp
Se a planilha for protegida com senha substitua esta linha
Código: Selecionar todos
ws.Protect userinterfaceonly:=True
por esta
Código: Selecionar todos
 ws.Protect "991234", UserInterFaceOnly:=True
Lembrando que a senha de proteção da planilha será de livre acesso se o usuário abrir o editor de VBA.
Para inibir o acesso é conveniente bloquear com senha o projeto ~~~> no editor de VBA / menu Ferramentas / Propriedades de VBAProject / Proteção

Re: Bloqueando células preenchidas somente depois de salvar

Enviado: 24 Ago 2018 às 18:16
por osvaldomp
ArthurPossenti escreveu:Em outro arquivo que também preciso fazer isso eu preciso colocar esse macro no intervalo C7:V25 e AA7:AJ25.
Para estabelecer o bloqueio preciso colocar entre os parentes os dois intervalos separados por ponto e vírgula ou preciso modificar algo mais?
Basta substituir esta parte.
Código: Selecionar todos
Range("C7:V25, AA7:AJ25") ...

Re: Bloqueando células preenchidas somente depois de salvar

Enviado: 24 Ago 2018 às 20:36
por ArthurPossenti
Perfeito Osvaldo

muito obrigado

valeu pela dica em proteger o projeto também

vou dar como resolvido o problema

muito obrigado novamente

um grande abraço,

Att