Ir ao conteúdo
  • Cadastre-se

Bloqueio de linha após preenchimento de célula específica


Posts recomendados

Bom dia! Conto com a ajuda de vocês…

Tenho uma planilha de controle de entrada e saída de produtos. Venho tentado montar uma linha de código para que bloqueie toda a linha preenchido ao chegar na Coluna 15 (O), que seria a coluna de status, para confirmação das informações, porém não estou conseguindo produzir um código que faça exatamente o que quero, já consegui que bloqueasse toda a coluna, mas não consegui regular isso para apenas as células preenchidas anteriormente daquela linha, que seria de A a N.

Se puderem me ajudar, agradeço!

 

 

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ColunasQ As Range
Set ColunasQ = Range("O9:O503")
If Not Application.Intersect(ColunasQ, Range(Target.Address)) Is Nothing Then
ActiveSheet.Unprotect ("")
linha = Target.Row
Range("O" & linha).Locked = True
ActiveSheet.Protect (""), DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
End Sub

 

 

 

Eis o código que usei, ele funciona como deve apenas na primeira linha preenchida, pois ao executar o macro ele bloqueia a coluna O inteira, porém o que preciso é que bloqueie apenas a linha selecionada. 

Link para o comentário
Compartilhar em outros sites

Experimente.

Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Column <> 15 Then Exit Sub
 If Application.CountA(Cells(Target.Row, 1).Resize(, 15)) = 15 Then
  ActiveSheet.Protect userinterfaceonly:=True
  Cells(Target.Row, 1).Resize(, 15).Locked = True
 End If
End Sub

 

obs.

1. considerei que a planilha é protegida sem senha

2. o código irá executar ao inserir valor na coluna 'O' e se todas as células da linha até a coluna 'N' estiverem preenchidas.

Link para o comentário
Compartilhar em outros sites

10 minutos atrás, Vinicius Santi disse:

Testei o código e ele mantém bloqueando a coluna O inteira. 

 

1. antes de iniciar os testes remova o seu código atual

2. prepare a planilha: mantenha bloqueadas as células que não serão utilizadas e desbloqueie as células em que irá inserir dados (colunas 'A:O')

3. instale o código que eu sugeri

 

funcionamento - após inserir conteúdo em qualquer célula da coluna 'O', e estando preenchidas as células da mesma linha nas colunas 'A:N' o código irá bloquear a linha preenchida.

 

Se não conseguir disponibilize uma amostra do seu arquivo com o código instalado.

Link para o comentário
Compartilhar em outros sites

Fazendo isso o código funciona, porém só estou produzindo a planilha, quem vai utilizar deveria ficar desbloqueando e bloqueando as células que não serão utilizadas. Bloqueando as células que não seriam preenchidas o código que usei inicialmente também funciona. 

Eis uma cópia da planilha

planilhatst.xlsm

Link para o comentário
Compartilhar em outros sites

2 minutos atrás, Vinicius Santi disse:

... quem vai utilizar deveria ficar desbloqueando e bloqueando as células que não serão utilizadas.

 

Porque desbloquear células que não serão utilizadas ? :confused:

Link para o comentário
Compartilhar em outros sites

Tenho dificuldades para entender o que você quer fazer.

 

O que entendi até aqui é que você está preparando a planilha para uso de outras pessoas. Então se você fizer uma única vez a preparação que eu sugeri no post #4 a planilha estará pronta para uso, sem a necessidade de bloquear/desbloquear mais nada durante o seu uso.

 

Daí pra frente o que você quer fazer?

Link para o comentário
Compartilhar em outros sites

substitua esta linha

ActiveSheet.Protect userinterfaceonly:=True    

 

por esta, e substitua "jacaré" pela sua senha

ActiveSheet.Protect "jacaré", UserInterfaceOnly:=True

 

Lembrando que para dificultar o acesso dos usuários à senha que estará no código é preciso proteger o Projeto VBA. No editor de VBA menu Ferramentas / Propriedades de VBAProject...

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...