Ir ao conteúdo
  • Cadastre-se
Vinicius Santi

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

Recommended Posts

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. 

Compartilhar este post


Link para o post
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.

  • Curtir 1

Compartilhar este post


Link para o post
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.

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
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:

Compartilhar este post


Link para o post
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?

  • Curtir 1

Compartilhar este post


Link para o post
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...

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×