Este fórum foi descontinuado. LEIA AQUI e participe da Comunidade BABOO :)

Ir para conteúdo
jsbernardo

Bloquear Células Excel

Mensagem Recomendada

Boa noite,

Tenho um ficheiro Excel com várias folhas e em cada folha tenho dados e fórmulas que quero manter seguras.

Essas fórmulas e dados estão em células identificadas com diversas cores, só que são imensas células e com uma dispersão muito grande pelas folhas.

Existe forma de se conseguir atribuir automaticamente a essas células com cor o estado de protegidas, para quando escolher a opção proteger folha elas ficarem bloqueadas e somente as células sem cor poderem ser editadas?

É que são mesmo muitas células dispersas a proteger e fazer essa protecção pela forma "normal" seria muito demoroso e corria o risco de certamente falhar algumas células. 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça o teste conforme abaixo em uma cópia do seu arquivo.

Instale o código abaixo em um módulo comum, assim:
1. copie o código daqui
2. a partir da planilha em que estão os dados tecle 'Alt+F11' para acessar o editor de VBA
3. no menu do editor >> Inserir >> Módulo
4. cole o código na janela em branco que vai se abrir
5. feito! 'Alt+Q' para retornar para a planilha e testar

para rodar o código:
6. tecle 'Alt+F8' >> selecione a macro correspondente >> Executar, ou insira um botão na planilha e vincule-o à macro ou vincule-a a um atalho de teclado (Alt+F8 > Opções).

Sub BloqueiaCélulasPintadas()
 Dim c As Range, ws As Worksheet
  For Each ws In ThisWorkbook.Worksheets
   With ws
    .Unprotect
    .Cells.Locked = False
     For Each c In .UsedRange.Cells
      If c.Interior.ColorIndex <> -4142 Then c.Locked = True
     Next c
     .Protect
   End With
  Next ws
End Sub

 


 

Osvaldo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Osvaldo,

Desde já obrigado pela ajuda, mas não está a dar certo.

Dá o seguinte erro a correr a macro e penso ser por existirem células que estão unidas e não ser todas células "simples", será?

image.png.a20e964e1595ec3814e265b0e3d72b39.png

Editado por jsbernardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, Bernardo.

Você poderia disponibilizar uma amostra do seu arquivo Excel com o código instalado ?

Não é necessário que as planilhas contenham dados, mas devem ser mantidas as células pintadas e as células mescladas (unidas). Um arquivo com 2 ou 3 planilhas é o suficiente.


 

Osvaldo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 29/06/2018 at 5:48 AM, jsbernardo disse:

Dá o seguinte erro a correr a macro e penso ser por existirem células que estão unidas e não ser todas células "simples", será?

Olá, Bernardo. Exatamente isso, problemas com células unidas/mescladas. Experimente o código abaixo no lugar do anterior. Aqui leva cerca de 20 segundos para executar no arquivo que você disponibilizou com duas planilhas.

Sub BloqueiaCélulasPintadas()
 Dim c As Range, ws As Worksheet
  For Each ws In ThisWorkbook.Worksheets
   With ws
    .Unprotect
    .Cells.Locked = False
     For Each c In .UsedRange.Cells
      If c.Interior.ColorIndex <> -4142 Then
       If c.MergeCells = True Then
        c.MergeArea.Locked = True
       Else: c.Locked = True
       End If
      End If
     Next c
     .Protect
   End With
  Next ws
End Sub

 


 

Osvaldo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×
×
  • Criar Novo...