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

Защита всех строк, кроме строки с сегодняшней датой, с помощью кода VBA
Защита всех строк с прошедшими датами с помощью кода VBA
Защита всех строк, кроме строки с сегодняшней датой, с помощью кода VBA
Разрешите редактирование только той строки, которая соответствует сегодняшней дате. Следующий код поможет вам в этом. Выполните следующие действия:
1. Щёлкните правой кнопкой мыши по ярлыку листа, для которого требуется защита ячеек на основе даты, и выберите в контекстном меню пункт Просмотреть код. В появившемся окне Microsoft Visual Basic for Applications скопируйте и вставьте приведённый ниже код в пустой модуль:
Код 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

Примечание: в приведённом выше коде буква E обозначает заголовок столбца с датой, а «111111» — пароль для защиты этого листа. Вы можете изменить их в соответствии со своими требованиями.
2. Затем сохраните и закройте это окно кода.
(1.) Если вы щёлкнете по ячейкам вне строки с сегодняшней датой, появится окно с сообщением о невозможности редактирования. См. снимок экрана:

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


Раскройте магию Excel с помощью KUTOOLS AI
- Интеллектуальное выполнение: Выполняйте операции с ячейками, анализируйте данные и создавайте диаграммы — всё это доступно через простые команды.
- Пользовательские формулы: создавайте индивидуальные формулы для оптимизации рабочих процессов.
- Программирование на VBA: Пишите и внедряйте код VBA легко и без усилий.
- Анализ формул: Легко разбирайтесь даже в самых сложных формулах.
- Перевод текста: Ломайте языковые барьеры прямо в ваших таблицах.
Защита всех строк с прошедшими датами с помощью кода VBA
Если необходимо защитить все строки с прошедшими датами и разрешить изменение только строк с сегодняшней и будущими датами, используйте следующий код VBA:
1. Щёлкните правой кнопкой мыши по ярлыку листа, для которого требуется защита ячеек на основе даты, и выберите в контекстном меню пункт Просмотреть код. В появившемся окне Microsoft Visual Basic for Applicationsскопируйте и вставьте приведённый ниже код в пустой модуль:
Код 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 обозначает номер столбца, в котором расположена дата, а «111111» — пароль для защиты этого листа. Вы можете изменить их в соответствии со своими требованиями.
3. Затем сохраните и закройте это окно кода.
(1.) При щелчке по ячейкам с прошедшими датами появится окно с сообщением о невозможности редактирования. См. снимок экрана:

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

Лучшие инструменты повышения продуктивности в Office
Раскройте весь потенциал Excel с помощью Kutools для Excel и ощутите эффективность как никогда раньше.Kutools для Excel предлагает более 300 расширенных функций для повышения продуктивности и Экономия времени.Нажмите здесь, чтобы получить нужную Вам функцию…
Office Tab добавляет в Office вкладки и значительно упрощает Вашу работу
- Включите редактирование и чтение во вкладках в Word, Excel, PowerPoint, Publisher, Access, Visio и Project.
- Открывайте и создавайте несколько документов во вкладках одного окна — вместо того чтобы использовать отдельные окна.
- Повышает вашу продуктивность на 50 % и экономит сотни кликов мышью каждый день!
Все надстройки Kutools — один установщик
Kutools for Office — набор надстроек для Excel, Word, Outlook и PowerPoint, а также Office Tab Pro, идеально подходящий командам, работающим с разными приложениями Office.
- Единый комплект— надстройки для Excel, Word, Outlook и PowerPoint + Office Tab Pro
- Один установщик, одна лицензия— настройка занимает считанные минуты (готово для MSI)
- Лучше работать вместе— оптимизированная продуктивность во всех приложениях Office
- 30-дневная полнофункциональная пробная версия— без регистрации и кредитной карты
- Лучшее соотношение цены и качества— экономия по сравнению с покупкой отдельных надстроек