Note: The other languages of the website are Google-translated. Back to English

Como bloquear células especificadas sem proteger a planilha inteira no Excel?

Normalmente, você precisa proteger toda a planilha para impedir que as células sejam editadas. Existe algum método para bloquear células sem proteger a planilha inteira? Este artigo recomenda um método VBA para você.

Bloqueie as células especificadas sem proteger a planilha inteira com VBA


Bloqueie as células especificadas sem proteger a planilha inteira com VBA


Supondo que você precise bloquear as células A3 e A5 na planilha atual, o código VBA a seguir o ajudará a conseguir isso sem proteger a planilha inteira.

1. Clique com o botão direito na guia da folha e selecione Ver código no menu do botão direito.

2. Em seguida, copie e cole o código VBA abaixo na janela Código. Veja a imagem:

Código VBA: bloquear células especificadas sem proteger toda a planilha

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column = 1 Then
        If Target.Row = 3 Or Target.Row = 5 Then
            Beep
            Cells(Target.Row, Target.Column).Offset(0, 1).Select
        End If
    End If
End Sub

Nota: No código, Coluna 1, Linha = 3 e Linha = 5 indica que as células A3 e A5 na planilha atual serão bloqueadas após a execução do código. Você pode alterá-los conforme necessário.

3. aperte o outro + Q simultaneamente para fechar o Microsoft Visual Basic para Aplicações janela.

Agora as células A3 e A5 estão bloqueadas na planilha atual. Se você tentar selecionar a célula A3 ou A5 na planilha atual, o cursor será movido para a célula adjacente direita automaticamente.


Artigos relacionados:


As melhores ferramentas de produtividade para escritório

O Kutools for Excel resolve a maioria dos seus problemas e aumenta sua produtividade em 80%

  • armadilha para peixes: Insira rapidamente fórmulas complexas, gráficos e qualquer coisa que você tenha usado antes; Criptografar células com senha; Criar lista de discussão e enviar emails ...
  • Barra Super Fórmula (edite facilmente várias linhas de texto e fórmula); Layout de leitura (ler e editar facilmente um grande número de células); Colar na faixa filtrada...
  • Mesclar células / linhas / colunas sem perder dados; Dividir o conteúdo das células; Combinar linhas / colunas duplicadas... Evite células duplicadas; Comparar intervalos...
  • Selecione Duplicado ou Único Linhas; Selecione linhas em branco (todas as células estão vazias); Super Find e Fuzzy Find em muitos livros; Seleção aleatória ...
  • Cópia exata Várias células sem alterar a referência da fórmula; Criação automática de referências para várias folhas; Inserir marcadores, Caixas de seleção e mais ...
  • Extrair Texto, Adicionar texto, remover por posição, Remover Espaço; Criar e imprimir subtotais de paginação; Converter entre conteúdo de células e comentários...
  • Super Filtro (salvar e aplicar esquemas de filtro a outras planilhas); Classificação Avançada por mês / semana / dia, frequência e mais; Filtro Especial por negrito, itálico ...
  • Combine pastas de trabalho e planilhas; Mesclar tabelas com base em colunas-chave; Divida os dados em várias folhas; Conversão em lote de xls, xlsx e PDF...
  • Mais de 300 recursos poderosos. Suporta Office / Excel 2007-2019 e 365. Suporta todos os idiomas. Fácil implantação em sua empresa ou organização. Teste gratuito de 30 dias com recursos completos. Garantia de devolução do dinheiro em 60 dias.
guia kte 201905

Guia do Office traz interface com guias para o Office e torna seu trabalho muito mais fácil

  • Habilite a edição e leitura com guias em Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Abra e crie vários documentos em novas guias da mesma janela, em vez de em novas janelas.
  • Aumenta sua produtividade em 50% e reduz centenas de cliques do mouse para você todos os dias!
parte inferior da aba do escritório
Comentários (20)
Ainda não há classificações. Seja o primeiro a avaliar!
Este comentário foi feito pelo moderador no site
Eu queria esconder a fórmula na célula O1. Favor informar fórmula para o mesmo.
Este comentário foi feito pelo moderador no site
Caro ajay,
Para ocultar a fórmula das células, siga o hiperlink abaixo para obter a solução.
https://www.extendoffice.com/documents/excel/1424-excel-hide-formulas.html
Este comentário foi feito pelo moderador no site
Caro ajay,
Se você deseja ocultar a fórmula na célula O1 sem proteger a planilha, tente o script VBA abaixo.
Sub Worksheet_SelectionChange particular (destino ByVal como intervalo)
Static TheFormula As String
Se Target.Address = "$O$1" Então
Com alvo
TheFormula = .Formula
.Valor = .Value
Terminar com
Outro
Com intervalo("O1")
Se Não .HasFormula Então
.Fórmula = A Fórmula
Se acabar
Terminar com
Se acabar
End Sub

Depois de usar o código, parece que a fórmula da célula O1 é alterada para resultado da fórmula. Na verdade, ele oculta a fórmula exibindo o resultado da fórmula na barra de fórmulas. E a fórmula será exibida se o código estiver quebrado.
Este comentário foi feito pelo moderador no site
como eu poderia bloquear um intervalo de linhas, digamos 4-46 e colunas 8 e 10
Este comentário foi feito pelo moderador no site
Prezado AJ,
Se você deseja bloquear um intervalo de linhas e colunas especificadas, tente o script VBA abaixo.

Sub Worksheet_SelectionChange particular (destino ByVal como intervalo)
Dim xRg como intervalo
Dim xRgEx como intervalo
Dim xRgExEach As Range
On Error Resume Next
Application.ScreenUpdating = False
Set xRg = Range("H:J,4:46") 'Muda o intervalo de linhas e o intervalo de colunas que você bloqueará sem proteger a planilha
Definir xRgEx = Application.Intersect(xRg, Target)
Se xRgEx não for nada, saia do sub
Células(1, 1). Selecione 'Especifique uma célula para a qual você irá mudar após selecionar as células bloqueadas
Application.ScreenUpdating = True
End Sub
Este comentário foi feito pelo moderador no site
Essa é uma ótima solução alternativa, especialmente em pastas de trabalho compartilhadas em que a ativação/desativação da proteção não é compatível. Muito obrigado.
Este comentário foi feito pelo moderador no site
Caro Cristal,

Você me forneceu uma solução (metade dela) que eu tenho lutado nas últimas semanas, mas eu precisaria de mais algumas dicas.

Como isso poderia ser aplicado apenas a um intervalo de tabela, não a uma planilha inteira? Desde já, obrigado.
Este comentário foi feito pelo moderador no site
Bom dia,
Conforme o código VBA fornecido abaixo, altere o intervalo especificado "H:J,4:46" para o intervalo da tabela que você deseja bloquear apenas na planilha.
E células(1,1) devem ser a célula fora do intervalo da tabela. Ao clicar em qualquer célula no intervalo da tabela, o cursor será movido para essa célula automaticamente.

Sub Worksheet_SelectionChange particular (destino ByVal como intervalo)
Dim xRg como intervalo
Dim xRgEx como intervalo
Dim xRgExEach As Range
On Error Resume Next
Application.ScreenUpdating = False
Set xRg = Range("H:J,4:46") 'Muda o intervalo de linhas e o intervalo de colunas que você bloqueará sem proteger a planilha
Definir xRgEx = Application.Intersect(xRg, Target)
Se xRgEx não for nada, saia do sub
Células(1, 1). Selecione 'Especifique uma célula para a qual você irá mudar após selecionar as células bloqueadas
Application.ScreenUpdating = True
End Sub
Este comentário foi feito pelo moderador no site
Caro Cristal,

Existe alguma maneira que esta macro pode ser executada automaticamente ao abrir o arquivo, ou ao clicar em qualquer célula. Não quero que as pessoas tenham que executar a macro manualmente para que os intervalos necessários sejam protegidos.

Além disso, precisarei proteger 12 intervalos não adjacentes. Por exemplo: I11:I20 e K11:K20 e M11:20 etc... Como faço isso?

Por último, e este pode estar pedindo demais, mas é possível aplicar a proteção aos intervalos de exemplo que forneci acima, MAS, em seguida, estender a proteção para linhas adicionais à medida que novas são adicionadas? Em outras palavras, a proteção seria aplicada a I11:I20 e K11:K20 e M11:20, mas um usuário poderia adicionar uma nova linha (linha 21), com novos dados, mas uma vez que a nova linha fosse adicionada, então a proteção se aplicaria a I11:I21 e K11:K21 e M11:21. Estou pedindo a lua? :-)

Obrigado por tudo o que você já forneceu! Eu não posso agradecer a você e outras pessoas como você o suficiente para compartilhar o seu conhecimento. Incrível!
Este comentário foi feito pelo moderador no site
Caro Carlos
O código VBA a seguir pode ajudá-lo a resolver o problema. Preencha seus intervalos na quarta linha do código e pressione as teclas Alt + Q para retornar à planilha. Em seguida, mude para outra planilha e volte para a planilha atual para ativar o código. Obrigado pelo seu comentário.

Dim xRg como intervalo
Sub-Planilha Particular_Activate ()
Se xRg não é nada então
Set xRg = Union(Range("I10:I20"), Range("K10:K20"), Range("M10:M20"), Range("O10:O20"))
Se acabar
End Sub
Private Sub Worksheet_Change (ByVal Target As Range)
Dim I como inteiro
Dim xRgNew As Range
Dim xRgLCell como intervalo
On Error Resume Next
Application.EnableEvents = False
Para I = 1 Para xRg.Areas.Count
Definir xRgLCell = xRg.Areas.Item(I)
Definir xRgLCell = xRgLCell(xRgLCell.Count).Offset(1, 0)
Se Target.Address = xRgLCell.Address Then
Se xRgNew não é nada, então
Definir xRgNew = Destino
Outro
Definir xRgNew = União(xRgNew, Target)
Se acabar
Se acabar
Seguinte
Definir xRg = União(xRg, xRgNew)
Application.EnableEvents = True
End Sub
Sub Worksheet_SelectionChange particular (destino ByVal como intervalo)
Em erro GoTo Exitsub
Se (Not Intersect(xRg, Target) for Nothing) E (Target.Count = 1) Then
Alvo.Deslocamento (0, 1). Selecione
Se acabar
Saída sub:
End Sub
Este comentário foi feito pelo moderador no site
Caro Cristal,

Muito obrigado por isso! Funciona perfeitamente.

Eu usei o código no comentário de Carlos para executar a macro automaticamente conforme você abre o arquivo. Eu queria saber se existe uma maneira de ter um botão "Desfazer" ou algo parecido, que permita cancelar esse código e, portanto, desbloquear os intervalos que foram bloqueados.

Eu quero que eles sejam bloqueados na maioria das vezes, mas gostaria de desbloqueá-los caso precise alterar algum dado. A única razão pela qual não estou protegendo a planilha inteira é porque, se o fizer, desativa a capacidade de expandir as tabelas. Isso, por sua vez, expande em um gráfico de linhas.

Muito obrigado pela ajuda!
Este comentário foi feito pelo moderador no site
Olá Erin,
Você pode quebrar o código manualmente clicando no botão Break na janela Microsoft Visual Basic for Applications para desbloquear esses intervalos. E execute o código para ativá-lo novamente. Obrigado por seu comentário.
Este comentário foi feito pelo moderador no site
Bom Dia,
Comment faire pour verrouiller de la cellule B8 à B10000?
D'avance merci de votre resposta.
Christophe
Este comentário foi feito pelo moderador no site
Existe alguma função para definir, por exemplo, a célula 2 da linha 13 para 900? Ou eu preciso perfurar manualmente cada nome de célula no código?
Este comentário foi feito pelo moderador no site
Olá,

Eu usei o código fornecido ao Carlos e ele fez exatamente o que eu queria. Existe uma maneira de ter alguns intervalos deslocados dentro da LINHA à direita do intervalo protegido (como o código "Carlos" já faz), mas ter outros intervalos deslocados dentro da COLUNA para a célula diretamente abaixo do intervalo protegido? Tentei inserir o código "Carlos" duas vezes e alterar o deslocamento, mas recebi vários erros.

Obrigado
Este comentário foi feito pelo moderador no site
Oi Charlie
Desculpe, não posso ajudá-lo com isso ainda. Obrigado pelo seu comentário.
Este comentário foi feito pelo moderador no site
Oi,

Tentei usar o código para intervalos que você postou anteriormente, mas não está funcionando - você pode me aconselhar se devo combinar o código para intervalos acima ou abaixo?


obrigado
Este comentário foi feito pelo moderador no site
Eu tentei não posso, Esconder fórmula sem proteger.
Este comentário foi feito pelo moderador no site
Existe uma maneira de esse código VBA ser executado automaticamente toda vez que alguém abre o arquivo?
Este comentário foi feito pelo moderador no site
Oi Aaron,Depois de adicionar o código, salve a pasta de trabalho como uma pasta de trabalho habilitada para macro do Excel (clique em Envie o > Salvar como > especifique uma pasta para o arquivo > escolha Pasta de trabalho habilitada para macro do Excel de Salvar como tipo lista suspensa > Salvar). Depois disso, toda vez que você abre o arquivo, o código funciona automaticamente.
Não há comentários postados aqui ainda
Deixe o seu comentário
Postando como convidado
×
Avalie esta postagem:
0   Personagens
Locais sugeridos