Notifications
Clear all

Proteger células a medida que for digitando.

10 Posts
5 Usuários
0 Reactions
1,726 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde a todos.

Algúem tem alguma macro para ir protegendo as células contra alterações a medida que forem sendo digitados os dados nelas?

Grato.

Silvio Felinto.

 
Postado : 11/09/2013 10:13 am
(@depoisteconto)
Posts: 183
Reputable Member
 

Veja se ajuda.

http://info.abril.com.br/forum/viewtopic.php?t=2169

At

 
Postado : 11/09/2013 11:21 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde.

Testei o primeiro código enão deu certo para o que eu quero.
Quando digito numa célula e passo para outra, a planilha é bloqueada.
O que desejo é que toda vez que for digitando, as células nas quais já inseri os dados é que fiquem bloqueadas.

Grato.

Silvio.

 
Postado : 11/09/2013 1:57 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa noite Silvio

No fórum BABOO eu anexei um exemplo que resolveu uma dúvida parecida com a tua, só que lá o meu nick é "Mourense".
Acesse e veja se te atende:

http://www.babooforum.com.br/forum/inde ... e-uma-vez/

Dê retorno.

Abraço.

 
Postado : 11/09/2013 3:42 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa noite!!

Use a pesquisa e a biblioteca!!

Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim NewValue As Variant, OldValue As Variant 
    If Target.Count > 1 Then Exit Sub 
    If Not Intersect(Target, Range("A1:F10")) Is Nothing Then 
        NewValue = Target.Value 
        Application.EnableEvents = False 
        Application.Undo 
        OldValue = Target.Value 
        If OldValue <> "" Then 
            MsgBox "Você não pode alterar o conteudo da celula.", 16, "Células Bloqueadas" 
            Target.Value = OldValue 
        Else 
            Target.Value = NewValue 
        End If 
        Application.EnableEvents = True 
    End If 
End Sub 

Tente adaptar esse exemplo.

Att

 
Postado : 11/09/2013 7:32 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde Patropi e Alexandre.

Patropi,
Sua dica é muito boa , mas trata-se de aplicar um formulário para copiar de uma planilha para outra. Baixei o anexo do link e testei, porém só copiou o conteúdo duas primeiras células da Plan1 para a Plan2. Que será que está havendo?

Alexandre,
Sua macro funcionou. Vi que preciso só alterar o intervalo do range para o que eu quero.
Tem duas coisas: toda vez que digito em alguma célula, tenho que dar TAB duas vezes para passar para a próxima.
Tem como resolver? E como faço se precisar corrigir algum erro de digitação nas células protegidas?

Um abraço.

Silvio

 
Postado : 12/09/2013 12:21 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

|Boa noite!!

Como eu não estou com tempo, só posso lhe ajudar com a questão abaixo.
Altere essa parte

If OldValue <> "" Then 
    MsgBox "Você não pode alterar o conteudo da celula.", 16, "Células Bloqueadas" 
    Target.Value = OldValue 
Else 
    Target.Value = NewValue 

Para....

If OldValue = "" Then 
    Target.Value = NewValue 
ElseIf InputBox("enter password") = "SuaSenha" Then 
    Target.Value = NewValue 
Else: MsgBox "Você não pode alterar o conteudo da celula.", 16, "Células Bloqueadas" 
    Target.Value = OldValue 
 
Postado : 12/09/2013 4:12 pm
(@rafaelsc)
Posts: 15
Eminent Member
 

Sou leigo em VBAbês. Mas vou jogar um pitaco com base no que li no código da planilha que postei neste tópico. Fiquem a vontade para corrigir ou desenvolver a solução de forma que atenda melhor a expectativa do camarada. Perdoe-me se não corresponde a expectativa.
Na guia inferior da planilha, exibir código e MS-VBA será aberta. Duplo clique sobre a planilha desejada.
Entrar com:

Sub worksheet_change(ByVal faixa As Range)

para funcionar da forma que deseja, a cada digitação o código será executado.

Dim dados As Range
Set dados = Range("E1:G1000")

alterando para as células que deseja a ação. No meu código, apenas estipulei que protegesse os dados quando a coluna E for modificada.

ActiveSheet.Unprotect

para editar.

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=False

ou configuração similar à proteção desejada.
Obs: a minha sugestão seria implementar aqui um código para que ativasse a linha acima após alguns segundos de digitação, porém não sei sobre a possibilidade do comando.

End Sub

Espero ter ajudado.

 
Postado : 18/09/2013 8:51 pm
(@tsaymon)
Posts: 1
New Member
 

Fantástico o código para bloqueio a medida que for digitando.
link enviado por:"depoisteconto
http://info.abril.com.br/forum/viewtopic.php?t=2169
At

Thiago

 
Postado : 01/12/2013 5:58 pm
(@ryane)
Posts: 3
Active Member
 

Bom Dia!

Para bloquear as células, primeiramente você precisa selecionar todas as células da aba que você quer e clicar com o botão direito do mouse, formatar células, selecionar a aba Proteção e desmarcar a caixa de seleção Bloqueadas. Ou seja, todas as suas células passarão a ser desbloquedas quando você proteger (obviamente, com senha) a sua planilha.

Depois você vai até a Guia Revisão, Painel Alterações, botão Proteger Planilha, desmarca apenas a caixa de seleção "Selecionar células bloqueadas" e escolhe, por exemplo uma senha para efetivar a proteção. Essa senha deverá ser utilizada no código abaixo que fará o bloqueio e desbloqueio da planilha para que uma célula fique bloqueada após a digitação nela. Veja que eu utilizei a senha "123".

Feito tudo isso, você agora abre a IDE do VBA (ALT + F11) e na janela VBAProject que aparece no canto esquerdo da sua tela você dá um clique duplo em cima da planil ha que você quer que as células sejam bloquedas (no caso, a mesma que você já fez o procedimento acima). Isso fará surgir a janela de edição de código do lado direito da sua tela. Essa janela possui duas caixas combo na parte de cima. Clique na seta do combo da esquerda e selecione o objeto Worksheet. Isso fará o VBA inserir duas linhas de código na janela de edição. Esse é o evento SelectionChange da sua planilha. Observe que o cursor fica piscando dentro das duas linhas de código. Agora você seleciona o combo da direita e escolhe o evento Change. Novamente o VBA vai inserir duas linhas de código, agora referente ao evento Change da sua planilha. Você pode copiar todo o código abaixo e depois selecionar todas essas linhas que surgiram na janela de edição do VBA e colar o código copiado em cima. Salve tudo, feche a ide do VBA e pronto! Suas células serão bloqueadas sempre que você digitar algo nelas.
Código:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
ActiveSheet.Unprotect ("123")
Target.Locked = True
ActiveSheet.Protect ("123")
Application.EnableEvents = True
End Sub

 
Postado : 09/12/2013 5:47 am