Notifications
Clear all

Planilha Trancada para Edições

5 Posts
3 Usuários
0 Reactions
1,110 Visualizações
(@joseantonio)
Posts: 5
Active Member
Topic starter
 

Olá a todos.

Estou precisando de uma macro que impossibilite uma determinada planilha de ser editada, ou seja,

A plan 3 é um banco de dados de saída de pedidos.

A plan 3 é preenchida através de um botão na plan 2, que insere os dados na plan 3. O problema, é que a plan 3 não pode ser editada, ou seja, não é possível deletar, alterar ou inserir NADA manualmente nela, e sim somente através do botão da plan 2 (que insere e deleta).

Tenho o seguinte codigo que me foi fornecido pelo AleVBA:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim NewValue As Variant, OldValue As Variant
If Target.Count > 1 Then Exit Sub
'Say you want to work with the range A1:F100
If Not Intersect(Target, Range("A1:F10")) Is Nothing Then
NewValue = Target.Value
Application.EnableEvents = False
Application.Undo
OldValue = Target.Value
If OldValue = "" Then
Target.Value = NewValue
ElseIf InputBox("entre com a senha") = "alevba" Then
Target.Value = NewValue
Else: MsgBox "Você não tem permissão para alterar o conteúdo da celula.", 16, "Células Bloqueadas"
Target.Value = OldValue
End If
Application.EnableEvents = True
End If
End Sub

Esse código bloqueia a alteração de uma célula selecionada, porém se eu selecionar mais do que UMA, o excel permite a alteração de dados.

Já tentei alterar a linha: If Target.Count > 1 Then Exit Sub para: If Target.Count > 1000000 Then Exit Sub

mas deu errado...

Podem me ajudar? Preciso disso com urgência

Desde já agradeço.

Um Abraço

 
Postado : 10/09/2012 1:43 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Porque então a Plan3 não é simplesmente bloqueada?

Altere a linha...

If Not Intersect(Target, Range("A1:F10")) Is Nothing Then

Para ...

If Not Intersect(Target, Range("O se intervalo aqui...")) Is Nothing Then

Obs: a rotina deve ser inserida dentro da Plan3...
Att

 
Postado : 10/09/2012 4:09 pm
(@joseantonio)
Posts: 5
Active Member
Topic starter
 

Fala cara...

Não deu certo... Eu já havia tentado isso... A rotina continuou liberando a edição caso eu selecione mais de uma célula...

Em relação a planilha bloqueada, eu também já tentei, mas como ela fica bloqueada, então a inserção de novos dados (atraves do botão que fica na plan 2) se torna impossível...

 
Postado : 10/09/2012 5:02 pm
(@joseantonio)
Posts: 5
Active Member
Topic starter
 

Olá, alguem por favor, me ajude. Preciso muito deste comando.

 
Postado : 17/09/2012 12:32 pm
(@tacito)
Posts: 67
Trusted Member
 

cara, se o botão que você fala que existe na planilha 2 roda uma macro você pode deixar a planilha 3 protegida e inserir uma linha no código para desproteger a planilha no início da macro e no final do código vcê volta a proteger.

para desbloquear a linha é:
Worksheets("Plan3").Unprotect "sua senha"

e para voltar a bloquear:
Worksheets("Plan3").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="sua senha"

esta é a proteção padrão para proteger a planilha você vai conseguir selecionar qualquer célula, mas só vai editar as não protegidas.

 
Postado : 17/09/2012 12:54 pm