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

Как защитить ячейки по дате в Excel?

Обычно мы можем защитить рабочий лист, чтобы другие не могли редактировать или изменять значения ячеек, но иногда вам нужно защищать ячейки на основе даты. Например, я хочу защитить другие ячейки, но разрешить изменять только значения ячеек сегодняшней даты, как показано на следующем снимке экрана, в этой статье будет рассказано о том, как защитить ячейки на основе даты.

документ защищен по дате 1

Защитите все строки, кроме сегодняшней строки даты, с помощью кода VBA

Защитите все строки, прошедшие дату, с помощью кода VBA


стрелка синий правый пузырь Защитите все строки, кроме сегодняшней строки даты, с помощью кода VBA

Разрешите изменять только строку, которая соответствует сегодняшней дате, следующий код может помочь вам, пожалуйста, сделайте следующее:

1. Щелкните правой кнопкой мыши вкладку листа, на которой вы хотите защитить ячейки по дате, а затем выберите Просмотреть код из контекстного меню во всплывающем Microsoft Visual Basic для приложений окна, скопируйте и вставьте следующий код в пустой модуль:

Код VBA: защитить все строки, кроме сегодняшней строки даты:

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

документ защищен по дате 2

Внимание: В приведенном выше коде буква E - заголовок столбца, в котором находится дата, "111111»- пароль для защиты этого листа. Вы можете изменить их по своему усмотрению.

2. Затем сохраните и закройте это окно кода.

(1.) Если щелкнуть другие ячейки за пределами сегодняшней строки даты, появится всплывающее окно с напоминанием о невозможности редактирования ячейки, см. Снимок экрана:

документ защищен по дате 3

(2.) Если вы щелкните и измените строку, равную сегодняшней дате, она будет успешно изменена, см. Снимок экрана:

документ защищен по дате 4


стрелка синий правый пузырь Защитите все строки, прошедшие дату, с помощью кода VBA

Если вам нужно защитить все строки, прошедшие с даты, разрешить изменять только строки сегодняшней и будущей даты, примените следующий код VBA:

1. Щелкните правой кнопкой мыши вкладку листа, на которой вы хотите защитить ячейки по дате, а затем выберите Просмотреть код из контекстного меню во всплывающем Microsoft Visual Basic для приложений окна, скопируйте и вставьте следующий код в пустой модуль:

Код VBA: дата защиты всех строк прошла:

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

документ защищен по дате 5

Внимание: В приведенном выше коде число 5 номер столбца, в котором находится дата, "111111»- пароль для защиты этого листа. Вы можете изменить их по своему усмотрению.

3. Затем сохраните и закройте это окно кода.

(1.) Если вы нажмете, что дата ячеек прошла, появится всплывающее окно с напоминанием о том, что ячейка не может быть отредактирована, см. Снимок экрана:

документ защищен по дате 6

(2.) Если вы щелкните ячейку строк, чтобы попытаться изменить значения сегодняшней даты или будущей даты, она будет успешно изменена, см. Снимок экрана:

документ защищен по дате 7


Лучшие инструменты для работы в офисе

Kutools for Excel решает большинство ваших проблем и увеличивает вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма ...
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон...
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы... Предотвращение дублирования ячеек; Сравнить диапазоны...
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор ...
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое ...
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии...
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом ...
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF...
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
вкладка kte 201905

Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
офисный дно
Сортировать комментарии по
Комментарии (30)
Оценок пока нет. Оцените первым!
Этот комментарий был сведен к минимуму модератором на сайте
Лазейка: пароль может увидеть другой человек, используя опцию «Просмотр кода».
Этот комментарий был сведен к минимуму модератором на сайте
не работает, так как все ячейки показывают сообщение, но доступны для редактирования
Этот комментарий был сведен к минимуму модератором на сайте
Привет, можно ли заблокировать столбцы по дате прямо над столбцами?
Этот комментарий был сведен к минимуму модератором на сайте
Private Sub worksheet_Change (ByVal Target As Range)

'Подписаться на http://youtube.com/excel10tutorial

'Поддержите канал, пожертвовав на http://patreon.com/excel10tutorial

Тусклый цвет как диапазон

'Задайте здесь правильное имя листа:

С помощью ThisWorkbook.Sheets("АГОСТО-22")

.Снять защиту "ABCDE"

Для каждого столбца в .UsedRange.Columns

col.EntireColumn.Locked = col.Range("A1").Value <> Дата

Следующий столбец

.Защитить "ABCDE"

.EnableSelection = кслнорестриктионс

Конец с

End Sub
Этот комментарий был сведен к минимуму модератором на сайте
привет, можно ли заблокировать определенные ячейки в зависимости от даты, которая находится прямо над ними в столбце?
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Лусис,
Можете ли вы изложить свою проблему более конкретно? Или вы можете прикрепить скриншот своей проблемы.
Спасибо!
Этот комментарий был сведен к минимуму модератором на сайте
привет скайян

Да вот скриншот. Надеюсь это поможет.
Этот комментарий был сведен к минимуму модератором на сайте
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Люцис,
Вы хотите заблокировать столбцы, дата которых прошла, и можно изменить только столбцы сегодняшнего и будущих дней?
Этот комментарий был сведен к минимуму модератором на сайте
Верный! Как бы я это сделал?
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Луис,
Как насчет ячейки даты в A1? Вводится вручную или с помощью формулы =now()? Если это ячейка формулы, заблокированные столбцы будут изменены с изменением даты.
Ждем Вашего ответа!
Этот комментарий был сведен к минимуму модератором на сайте
Привет Скайанг

да, ячейка A1 имеет формулу =now().

спасибо!
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте .....


Я использую код для защиты всех строк, кроме строки с сегодняшней датой........



Private Sub Worksheet_SelectionChange (ByVal Target As Range)
'Обновить Extendoffice 20161025
Если Диапазон("A" & Selection.Row).Значение <> Дата Тогда
Пароль ActiveSheet.Protect: = "111111"
MsgBox «Можно редактировать только сегодняшнюю строку даты!», vbInformation, «Kutools for Excel»
ElseIf Range("E" & Selection.Row).Value = Date Then
Пароль ActiveSheet.Unprotect: = "111111"
ActiveSheet.EnableSelection = кслнорестриктионс
End If
End Sub


После того, как я сохраню и нажму на ячейку, я получаю сообщение, что можно редактировать только сегодняшнюю строку даты .... но если я дважды щелкну ячейку, я могу отредактировать ... пожалуйста, помогите
Этот комментарий был сведен к минимуму модератором на сайте
Это прекрасно работает. но как я могу переключить его, чтобы разблокировать столбец на основе дат в строке 3?
Этот комментарий был сведен к минимуму модератором на сайте
Как человек, который относительно плохо знаком с VBA, не могли бы вы объяснить, почему xRow = 2 в строке 4?



Спасибо
Этот комментарий был сведен к минимуму модератором на сайте
потому что в строке нет. 1 у вас есть заголовок
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте,

при запуске этого кода я получаю сообщение об ошибке, как показано на рисунке
Также я прилагаю снимок моего Excel, где я хочу внести изменения.

Можете ли вы указать в моем коде, где я должен внести изменения в соответствии с моим файлом Excel, чтобы можно было отредактировать ячейки, содержащие только сегодняшнюю и будущую дату???
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Каран,
Поскольку в вашей таблице есть объединенные ячейки, приведенный выше код не может быть правильно применен в таблице объединенных ячеек.
Если у вас есть другие хорошие идеи, пожалуйста, прокомментируйте здесь. Благодарю вас!
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте, я попытался сделать то же самое, но защитить все столбцы, кроме столбца с сегодняшней датой, с помощью кода VBA, заменив «Selection.Row» на «Selection.Columns» и «E» на «5» (номер строки, где указаны даты), но Я продолжаю получать ошибку 1004!

Любая помощь, пожалуйста?

спасибо
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте, я попытался сделать то же самое, но защитить все столбцы, кроме столбца с сегодняшней датой, с помощью кода VBA, заменив «Selection.Row» на «Selection.Columns» и «E» на «5» (номер строки, где указаны даты), но Я продолжаю получать ошибку 1004!

Любая помощь, пожалуйста?

спасибо
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте,
Чтобы применить этот код к нужным вам столбцам, используйте следующий код VBA: (Примечание: в коде 5 — это номер строки, содержащий дату, измените его по своему усмотрению.)

Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Dim xRg как диапазон
Установите xRg = Target.Worksheet.Cells(5, Target.Column)
Если xRg <> Дата Тогда
Пароль ActiveSheet.Protect: = "111111"
MsgBox «Можно редактировать только сегодняшнюю строку даты!», vbInformation, «Kutools for Excel»
ElseIf xRg.Value = Дата Тогда
Пароль ActiveSheet.Unprotect: = "111111"
ActiveSheet.EnableSelection = кслнорестриктионс
End If
End Sub

Пожалуйста, попробуйте, надеюсь, это поможет вам!
Этот комментарий был сведен к минимуму модератором на сайте
Благодарю вас! Извините, я не получил ваш ответ до сих пор, это может быть проблема в моей электронной почте.

Это сработало! Не могу не сказать спасибо! Я правда ценю это!
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте,
Рад, что это может помочь вам!
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте,

Я пытаюсь расширить это, чтобы защитить столбцы, которые не включают текущий месяц и/или текущую неделю. Я пытался заменить «Дату» на «месяц» или «неделю», но не получилось.

Я прикрепил образец таблицы недель, где пользователь не может редактировать или вводить столбцы, кроме этой недели.

Любые советы по этому поводу? или я должен использовать фактические даты, чтобы отразить день в месяце?
Этот комментарий был сведен к минимуму модератором на сайте
Спасибо за вашу помощь, большое спасибо, приятель, это большая помощь. и решил мое напряжение.
Быть безопасным
С уважениемРохит Кханна
Этот комментарий был сведен к минимуму модератором на сайте
Привет, я столкнулся с одной проблемой: как только я закрываю файл и снова открываю его в тот же день, код не работает. пожалуйста помогите я застрял
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Рохит,
Чтобы сохранить код, вы должны сохранить свою книгу в формате Excel Macro-Enabled Workbook, пожалуйста, попробуйте, спасибо!
Этот комментарий был сведен к минимуму модератором на сайте
привет, я сделал это, но когда я нажимаю на ячейку, сообщение показывает, что его нельзя редактировать, но когда я нажимаю клавиатуру, я все еще могу писать в ячейке
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте, я хотел бы защитить будущие дни и разрешить редактирование текущих и прошлых дней. Как я могу это сделать?
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте, Мигель. Чтобы защитить будущие дни, примените следующий код: Private Sub Worksheet_Change (ByVal Target As Excel.Range)
'Обновить Extendoffice
Dim xRow As Long
хряд = 2
Пароль ThisWorkbook.ActiveSheet.Unprotect: = "111111"
ThisWorkbook.ActiveSheet.Cells.Locked = Ложь
Делать до тех пор, пока не будет пусто (ячейки (xRow, 5))
Если Ячейки(xRow, 5) > Дата Тогда
Строки(xRow).Заблокировано = Истина
End If
xСтрока = xСтрока + 1
Петля
Пароль ThisWorkbook.ActiveSheet.Protect: = "111111"
End SubПожалуйста, попробуйте, надеюсь, это поможет вам!
Здесь еще нет комментариев
Оставляйте свои комментарии
Публикация как гость
×
Оценить этот пост:
0   Характеристики
Предлагаемые места

Подписывайтесь на Нас

Copyright © 2009 - www.extendoffice.ком. | Все права защищены. Питаться от ExtendOffice, | Карта сайта
Microsoft и логотип Office являются товарными знаками или зарегистрированными товарными знаками Microsoft Corporation в США и / или других странах.
Защищено Sectigo SSL