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

Como proteger células baseadas em data no Excel?

Normalmente, podemos proteger a planilha para evitar que outras pessoas editem ou modifiquem os valores das células, mas, às vezes, você precisa proteger as células com base na data. Por exemplo, eu quero proteger outras células, mas apenas permitir que os valores das células da data de hoje sejam modificados como mostrado na captura de tela a seguir, este artigo falará sobre como proteger as células com base na data.

doc proteger até a data 1

Proteja todas as linhas, exceto a linha da data de hoje com o código VBA

Proteja todas as linhas em que a data passou com o código VBA


seta azul bolha direita Proteja todas as linhas, exceto a linha da data de hoje com o código VBA

Permita apenas que a linha que é igual à data de hoje seja modificada, o código a seguir pode ajudá-lo, faça o seguinte:

1. Clique com o botão direito na guia da planilha em que deseja proteger as células com base na data e escolha Ver código a partir do menu de contexto, no pop-out Microsoft Visual Basic para Aplicações janela, copie e cole o seguinte código no módulo em branco:

Código VBA: protege todas as linhas, exceto a linha da data de hoje:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Updateby Extendoffice 20161025
    If Range("E" & Selection.Row).Value <> Date Then
        ActiveSheet.Protect Password:="111111"
        MsgBox "Only today's date row can be edited!", vbInformation, "Kutools for Excel"
    ElseIf Range("E" & Selection.Row).Value = Date Then
        ActiveSheet.Unprotect Password:="111111"
        ActiveSheet.EnableSelection = xlNoRestrictions
    End If
End Sub

doc proteger até a data 2

Nota: No código acima, a letra E é o cabeçalho da coluna onde a data está localizada, “111111”É a senha para proteger esta folha. Você pode alterá-los conforme sua necessidade.

2. Em seguida, salve e feche esta janela de código.

(1.) Se você clicar em outras células além da linha da data de hoje, uma caixa de prompt aparecerá para lembrá-lo de que a célula não pode ser editada, veja a captura de tela:

doc proteger até a data 3

(2.) Se você clicar e editar a linha igual à data de hoje, ela será modificada com sucesso, veja a captura de tela:

doc proteger até a data 4


seta azul bolha direita Proteja todas as linhas em que a data passou com o código VBA

Se você precisar proteger todas as linhas em que a data já passou, permita que apenas as linhas da data atual e futura sejam modificadas, aplique o seguinte código VBA:

1. Clique com o botão direito na guia da planilha em que deseja proteger as células com base na data e escolha Ver código a partir do menu de contexto, no pop-out Microsoft Visual Basic para Aplicações janela, copie e cole o seguinte código no módulo em branco:

Código VBA: proteger todas as linhas, a data passou:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Updateby Extendoffice 20161025
  Dim xRow As Long
  xRow = 2
  ThisWorkbook.ActiveSheet.Unprotect Password:="111111"
  ThisWorkbook.ActiveSheet.Cells.Locked = False
  Do Until IsEmpty(Cells(xRow, 5))
    If Cells(xRow, 5) < Date Then
      Rows(xRow).Locked = True
    End If
    xRow = xRow + 1
  Loop
  ThisWorkbook.ActiveSheet.Protect Password:="111111"
End Sub

doc proteger até a data 5

Nota: No código acima, o número 5 é o número da coluna onde a data está localizada, “111111”É a senha para proteger esta folha. Você pode alterá-los conforme sua necessidade.

3. Em seguida, salve e feche esta janela de código.

(1.) Se você clicar nas células em que a data passou, uma caixa de aviso aparecerá para lembrá-lo de que a célula não pode ser editada, veja a captura de tela:

doc proteger até a data 6

(2.) Se você clicar na célula de linhas para tentar alterar os valores na data de hoje ou na data futura, ela será modificada com sucesso, veja a captura de tela:

doc proteger até a data 7


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-2021 e 365. Suporta todos os idiomas. Fácil implantação em sua empresa ou organização. Recursos completos de avaliação gratuita de 30 dias. 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 (30)
Ainda não há classificações. Seja o primeiro a avaliar!
Este comentário foi feito pelo moderador no site
Loophole: A senha pode ser vista por outra pessoa usando a opção "Ver Código".
Este comentário foi feito pelo moderador no site
não está funcionando, pois todas as células mostram a mensagem, mas são editáveis
Este comentário foi feito pelo moderador no site
Oi, é possível bloquear colunas pela data diretamente acima das colunas?
Este comentário foi feito pelo moderador no site
Private Sub worksheet_Change(ByVal Target As Range)

'Inscrever-se para http://youtube.com/excel10tutorial

'Apoie o canal doando em http://patreon.com/excel10tutorial

Dim col como intervalo

'Defina o nome correto da planilha aqui:

With ThisWorkbook.Sheets("AGOSTO-22")

.Desproteger "ABCDE"

Para cada coluna em .UsedRange.Columns

col.EntireColumn.Locked = col.Range("A1").Value <> Data

Próxima coluna

.Proteja "ABCDE"

.EnableSelection = xlNoRestrictions

Terminar com

End Sub
Este comentário foi feito pelo moderador no site
oi, é possível bloquear certas células dependendo da data que está diretamente acima delas em uma coluna?
Este comentário foi feito pelo moderador no site
Olá, Luís,
Você pode dar o seu problema mais especificamente? Ou você pode anexar uma captura de tela como seu problema.
Obrigado!
Este comentário foi feito pelo moderador no site
Oi skyyang

Sim, aqui está uma captura de tela. Espero que isto ajude.
Este comentário foi feito pelo moderador no site
Aqui está.
Este comentário foi feito pelo moderador no site
Olá, Lúcio,
Você pretende bloquear as colunas cuja data passou, e apenas as colunas de hoje e dias futuros podem ser modificadas?
Este comentário foi feito pelo moderador no site
Correto! Como eu faria isso?
Este comentário foi feito pelo moderador no site
Olá, Luís,
Como sobre a célula de data em A1? É inserido manualmente ou inserido com uma fórmula =agora()? Se for uma célula de fórmula, as colunas bloqueadas serão alteradas com as alterações de data.
Ansioso por sua resposta!
Este comentário foi feito pelo moderador no site
Olá Skyyangg

sim, a célula A1 tem a fórmula =agora().

muito obrigado!
Este comentário foi feito pelo moderador no site
Olá .....


Estou usando o código para proteger todas as linhas, exceto a linha de data de hoje........



Sub Worksheet_SelectionChange particular (destino ByVal como intervalo)
'Atualizar por Extendoffice 20161025
If Range("A" & Selection.Row).Value <> Data Então
ActiveSheet.Proteger senha:="111111"
MsgBox "Somente a linha de data de hoje pode ser editada!", vbInformation, "Kutools for Excel"
ElseIf Range("E" & Selection.Row).Value = Date Then
ActiveSheet.Desproteger Senha:="111111"
ActiveSheet.EnableSelection = xlNoRestrictions
Se acabar
End Sub


Depois de salvar eu e clicar na célula, recebo a mensagem apenas a linha de data de hoje pode ser editada .... mas se eu clicar duas vezes na célula, posso editar ... por favor, ajude
Este comentário foi feito pelo moderador no site
Isso funciona muito bem. mas como posso alterná-lo para desbloquear uma coluna com base nas datas da linha 3?
Este comentário foi feito pelo moderador no site
Como alguém relativamente novo no VBA, você se importaria de explicar por que xRow = 2 na linha 4?



obrigado
Este comentário foi feito pelo moderador no site
porque na linha n. 1 você tem cabeçalho
Este comentário foi feito pelo moderador no site
Oi,

ao executar este código estou recebendo um erro conforme mostrado na figura
Também estou anexando um instantâneo do meu excel onde quero fazer alterações ..

Você pode orientar no meu código onde devo fazer alterações de acordo com meu arquivo excel para que as células que contêm apenas hoje e data futura possam ser editadas?
Este comentário foi feito pelo moderador no site
Olá, Karan,
Como existem células mescladas em sua tabela, o código acima não pode ser aplicado corretamente na tabela de células mescladas.
Se você tiver alguma outra boa ideia, comente aqui. Obrigada!
Este comentário foi feito pelo moderador no site
Olá, tentei fazer o mesmo, mas para proteger todas as colunas, exceto a coluna de data de hoje, com código VBA, substituindo "Selection.Row" por "Selection.Columns" e "E" por "5" (número da linha onde estão as datas), mas Eu continuo recebendo o erro 1004!

Alguma ajuda por favor?

Obrigado
Este comentário foi feito pelo moderador no site
Olá, tentei fazer o mesmo, mas para proteger todas as colunas, exceto a coluna de data de hoje, com código VBA, substituindo "Selection.Row" por "Selection.Columns" e "E" por "5" (número da linha onde estão as datas), mas Eu continuo recebendo o erro 1004!

Alguma ajuda por favor?

Obrigado
Este comentário foi feito pelo moderador no site
Olá,
Para aplicar esse código às colunas que você precisa, use o seguinte código VBA: (Observação: no código, 5 é o número da linha que contém a data, altere-o de acordo com sua necessidade.)

Sub Worksheet_SelectionChange particular (destino ByVal como intervalo)
Dim xRg como intervalo
Definir xRg = Target.Worksheet.Cells(5, Target.Column)
Se xRg <> Data Então
ActiveSheet.Proteger senha:="111111"
MsgBox "Somente a linha de data de hoje pode ser editada!", vbInformation, "Kutools for Excel"
ElseIf xRg.Value = Data Então
ActiveSheet.Desproteger Senha:="111111"
ActiveSheet.EnableSelection = xlNoRestrictions
Se acabar
End Sub

Por favor, tente, espero que possa ajudá-lo!
Este comentário foi feito pelo moderador no site
Obrigada! Desculpe, não recebi sua resposta até agora, pode ser um problema no meu e-mail.

Funcionou! Não posso dizer obrigado o suficiente! Eu realmente aprecio isso!
Este comentário foi feito pelo moderador no site
Oi,
Que bom que pode te ajudar!
Este comentário foi feito pelo moderador no site
Oi,

Estou tentando expandir isso para proteger colunas que não incluem este mês atual ou/e esta semana atual. Tentei substituir "Data" por "mês" ou "semana", mas não funcionou.

Anexei uma amostra de planilha de semanas em que o usuário não pode editar ou digitar colunas que não sejam esta semana.

Algum conselho sobre isso? ou devo usar datas reais para refletir um dia no mês?
Este comentário foi feito pelo moderador no site
Obrigado pela ajuda, muito obrigado amigo, é uma grande ajuda. e resolveu minha tensão.
Esteja seguro
AtenciosamenteRohit Khanna
Este comentário foi feito pelo moderador no site
Oi estou enfrentando um problema, depois de fechar o arquivo e reabri-lo novamente na mesma data, o código não funciona. por favor me ajudem estou preso
Este comentário foi feito pelo moderador no site
Olá, rohit,
Para manter o código, você deve salvar sua pasta de trabalho no formato Excel Macro-Enabled Workbook, por favor, tente, obrigado!
Este comentário foi feito pelo moderador no site
olá eu fiz isso, mas quando eu pressiono a mensagem da célula mostra que ela não pode ser editada, mas quando eu pressiono o keyborad eu ainda posso escrever na célula
Este comentário foi feito pelo moderador no site
Olá, gostaria de proteger os dias futuros e permitir a edição dos dias atuais e passados. Como faço isso?
Este comentário foi feito pelo moderador no site
Olá, Miguel, Para proteger os dias futuros, por favor aplique o código abaixo: Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Atualizar por Extendoffice
Dim xRow por muito tempo
xLinha = 2
ThisWorkbook.ActiveSheet.Unprotect Password:="111111"
ThisWorkbook.ActiveSheet.Cells.Locked = Falso
Faça até ficar vazio(Cells(xRow, 5))
If Cells(xRow, 5) > Data Então
Rows(xRow).Locked = True
Se acabar
xLinha = xLinha + 1
laço
ThisWorkbook.ActiveSheet.Protect Password:="111111"
End SubPor favor, tente, espero que possa ajudá-lo!
Não há comentários postados aqui ainda
Deixe o seu comentário
Postando como convidado
×
Avalie esta postagem:
0   Personagens
Locais sugeridos

Siga-nos

Copyright © 2009 - www.extendoffice.com. | Todos os direitos reservados. Distribuído por ExtendOffice. | | | Mapa do site
Microsoft e o logotipo do Office são marcas comerciais ou marcas registradas da Microsoft Corporation nos Estados Unidos e / ou em outros países.
Protegido por Sectigo SSL