Notifications
Clear all

Macro para bloquear células que possuem fórmula

14 Posts
4 Usuários
0 Reactions
3,259 Visualizações
(@suenne)
Posts: 50
Trusted Member
Topic starter
 

Bom dia,

tenho uma planilha com várias abas e gostaria de criar uma macro para travar todas as células que possuem fórmula, é possível?

Obrigada.

 
Postado : 12/05/2015 6:15 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!

Sub Macro2()
Dim sh As Worksheet
On Error Resume Next
For Each sh In ActiveWorkbook.Sheets
    With sh
        .Unprotect
        .Cells.Locked = False
        .Cells.SpecialCells(xlCellTypeFormulas, 23).Locked = True
        .Protect AllowDeletingRows:=True
    End With
Next sh
End Sub

Doni

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 12/05/2015 8:52 am
(@suenne)
Posts: 50
Trusted Member
Topic starter
 

Doni, boa tarde!

obrigada pela colaboração.

Tentei inserir aqui mas não funcionou, eu tenho que alterar algo?

 
Postado : 12/05/2015 10:02 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!

Entre na guia Desenvolvedor ou digite alt F11, click em inserir, click em modulo e cole o código lá. Novamente na guia Desenvolvedor click em Macros, click em executar macros.

Todas as células que contem fórmulas em todas as abas do arquivo serão bloqueadas para edição.

Doni

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 12/05/2015 10:47 am
(@suenne)
Posts: 50
Trusted Member
Topic starter
 

Entendi Doni,

porém encontrei outro problema, da maneira que bloqueou eu não consigo nem utilizar as funções de filtro na planilha, parece que ele trava essas células também.

Tem alguma alternativa?

 
Postado : 12/05/2015 11:37 am
(@luizhcosta)
Posts: 420
Honorable Member
 

Use:

Private Sub Workbook_Open()
'check for filter, turn on if none exists
With Worksheets("Minha Planilha")
  If Not .AutoFilterMode Then
    .Range("A1").AutoFilter
  End If
  .EnableAutoFilter = True
  .Protect Password:="senha", Contents:=True, UserInterfaceOnly:=True, AllowFiltering:=True
End With
End Sub

Onde se lê Minha Planilha insira o nome da sua planilha.

 
Postado : 12/05/2015 2:12 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!

Proteger células sem VBA
Por padrão, todas as células em uma planilha estão bloqueadas, ou seja, quando você protege uma planilha todas as células na planilha serão protegidas.

Para proteger apenas as células com fórmulas você tem que alterar a configuração padrão.

1 selecione toda a planilha clicando no canto superior esquerdo;
2 clique em formatar células;
3 na guia proteção:;
4 desmarque Bloqueadas e clique em Ok;
5 digite F5;
6 em Ir para clique em Especial;
7 em Ir para especial clique em fórmulas e clique em OK;
8 na guia Revisão clique em Proteger Planilha;
9 digite uma senha, clique em OK, confirme a senha e clique em OK.
Todas as suas células com fórmulas estarão protegidas simples, fácil e muito rápido.
O único inconveniente é ter que repetir para todas as planilhas do arquivo.
Doni

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 12/05/2015 4:04 pm
(@suenne)
Posts: 50
Trusted Member
Topic starter
 

Pois é Doni, como tenho várias abas fica inviável fazer o procedimento manual.

Luiz,

apliquei seu código na minha planilha, porém o problema do filtro continuou, não consegui fazer a seleção a partir dele.

Outra coisa, tem como essa macro já rodar automático, sem ser necessário eu mandar executar pra ficar bloqueado?

Quando eu clico em desproteger, ele libera as células e não me pede nenhuma senha.

Obrigada.

 
Postado : 13/05/2015 8:21 am
(@suenne)
Posts: 50
Trusted Member
Topic starter
 

Pessoal,

encontrei esse código aqui que funciona da maneira que eu preço, porém ele é aplicado aba por aba.

Como eu devo fazer para aplicar para toda planilha?

Sub Proteger_formulas()
    Range("A1").Select
    On Error Resume Next
    Selection.SpecialCells(xlCellTypeFormulas, 23).Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:=">1"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = "Contém fórmula"
        .InputMessage = ""
        .ErrorMessage = "Contém fórmula nesta célula" ' cel-> Validação-> Autorizaçao
        .ShowInput = True
        .ShowError = True
    End With
End Sub

Obrigada.

 
Postado : 13/05/2015 11:00 am
(@gtsalikis)
Posts: 2373
Noble Member
 

Tente assim:

Sub Proteger_formulas()
    For Each Sheet In ThisWorkbook.Worksheets
    Sheet.Activate
    Range("A1").Select
    On Error Resume Next
    Selection.SpecialCells(xlCellTypeFormulas, 23).Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:=">1"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = "Contém fórmula"
        .InputMessage = ""
        .ErrorMessage = "Contém fórmula nesta célula" ' cel-> Validação-> Autorizaçao
        .ShowInput = True
        .ShowError = True
    End With
    Next
End Sub

Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.

Gilmar

 
Postado : 13/05/2015 11:47 am
(@suenne)
Posts: 50
Trusted Member
Topic starter
 

Gilmar,

é isso mesmo que eu preciso!

Deixa eu te perguntar, eu removi a macro e as células continuaram travadas, eu preciso alterar uma fórmula, o que fazer para desbloquear?

Obrigada.

 
Postado : 13/05/2015 1:34 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Suenne, pelo que entendi esta rotina não protege a planilha ela adiciona uma Validação nas celulas que tem formula, então para alterar alguma formula, selecione a celula va na Guia DADOS / Validação de Dados e depois Limpar Tudo, só que para criar novamente a validação terá que rodar a macro novamente.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 13/05/2015 8:36 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

É como o Mauro falou.

Porém, vc pode fazer isso via macro também. Creio que o código a seguir seria o suficiente:

Sub Desproteger_formulas()
    For Each Sheet In ThisWorkbook.Worksheets
    Sheet.Activate
    Range("A1").Select
    On Error Resume Next
    Selection.SpecialCells(xlCellTypeFormulas, 23).Select
    With Selection.Validation
        .Delete
    End With
    Next
End Sub

Por favor, lembre de clicar na mãozinha das respostas que te ajudaram, como agradecimento.

Abs

Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.

Gilmar

 
Postado : 13/05/2015 11:49 pm
(@suenne)
Posts: 50
Trusted Member
Topic starter
 

Pessoal,

muito obrigada a todos pela ajuda, funcionou bem a solução!

 
Postado : 14/05/2015 6:38 am