Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
#35230
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
Você não está autorizado a ver ou baixar esse anexo.
#35626
Ao salvar o arquivo você quer bloquear as células preenchidas no intervalo B8:Q17 de todas as planilhas do arquivo. É isso?
#36075
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
#36097
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
Editado pela última vez por osvaldomp em 24 Ago 2018 às 18:18, em um total de 1 vez.
#36098
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") ...
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord