Совет. Другие языки - Google-Translated. Вы можете посетить English версия этой ссылки.
Войти
x
or
x
x
Регистрация
x

or

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

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

doc защищать по дате 1

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

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

Вкладка «Office» Включите редактирование и просмотр с вкладками в Office и упростите свою работу ...
Kutools для Excel добавляет расширенные функции 300 в Excel и повышает производительность на 80%
  • Авто текст: Создайте свои любимые диаграммы, изображения, ячейки, сложные формулы и снова использовать их быстро в будущем.
  • Больше, чем текстовые функции 20: Извлечь номер из текстовой строки; Извлечь или удалить часть текстов; Преобразование чисел и валют в английские слова ...
  • Инструменты слияния: Несколько рабочих книг и листов в одном; Объединить несколько ячеек / строк / столбцов и сохранить данные; Объединить повторяющиеся строки и суммы ...
  • Сплит Инструменты: Разбить данные на несколько листов на основе значения; Одна рабочая книга для нескольких файлов Excel, PDF или CSV; От одного столбца до нескольких столбцов ...
  • Вставить Пропуск Скрытые / отфильтрованные строки; Подсчет и сумма по цвету фона; Создать список рассылки и Отправка писем по значению ячейки...
  • Суперфильтр: Создавайте расширенные схемы фильтров и применяйте их к любым листам; Сортировать по неделям, дням, частоте и более; Фильтр жирным шрифтом, формулами, комментариями ...
  • Более чем мощные функции 300; Работает с Office 2007-2019 и 365; Поддерживает все языки; Простота развертывания в компании; Полнофункциональная 60-дневная бесплатная пробная версия.

arrow синий правый пузырь Защитите все строки, кроме сегодняшней строки даты с кодом 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

doc защищать по дате 2

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

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

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

doc защищать по дате 3

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

doc защищать по дате 4


arrow синий правый пузырь Защитите все строки, прошедшие с кодом 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

doc защищать по дате 5

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

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

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

doc защищать по дате 6

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

doc защищать по дате 7


Kutools для Excel - лучший инструмент для повышения производительности в офисе Повысьте производительность на 80%

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

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

  • Включить редактирование и чтение с вкладками в Word, Excel, PowerPoint, Издатель, Доступ, Visio и Проект.
  • Открывайте и создавайте несколько документов в новых вкладках одного и того же окна, а не в новых окнах.
  • Увеличивает вашу производительность на 50% и уменьшает сотни щелчков мышью для вас каждый день!
нижняя часть офиса
Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Karan · 1 months ago
    Hi,

    while running this code I am getting an error as shown in the figure
    Also i am attaching a snapshot my excel where i want to make changes..

    Can u guide in my code where should i make changes according to my excel file so that cells that contain only todays & future date can be editied ???
    • To post as a guest, your comment is unpublished.
      skyyang · 16 days ago
      Hello, Karan,
      Because there are merged cells in your table, the above code can not be applied correctly in merged cells table.
      If you have any other good ideas, please comment here. Thank you!
  • To post as a guest, your comment is unpublished.
    Niall · 8 months ago
    As someone who is relatively new to VBA, would you mind explaining why xRow = 2 in Line 4?



    Thanks
    • To post as a guest, your comment is unpublished.
      Piotr · 7 months ago
      because in row no. 1 you have header
  • To post as a guest, your comment is unpublished.
    Bobby · 1 years ago
    This works great. but how can I switch it to unlock a column based on dates in row 3?
  • To post as a guest, your comment is unpublished.
    TAHER KANPURWALA · 1 years ago
    Hello.....


    I am using the code for Protect all rows except today’s date row........



    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    'Updateby Extendoffice 20161025
    If Range("A" & 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


    After i save i and click on cell i get message only today's date row can be edited....but if i double click the cell the i can edit...pls help
  • To post as a guest, your comment is unpublished.
    LUIS GARCIA · 1 years ago
    hi is it possible to lock certain cells depending on the date that is directly above them in a column?
    • To post as a guest, your comment is unpublished.
      skyyang · 1 years ago
      Hi, Lusis,
      Can you give your problem more specifically? Or you can attach a screenshot as your problem.
      Thank you!
  • To post as a guest, your comment is unpublished.
    Lmg · 1 years ago
    Hi is it possible to lock columns by the date directly above the columns?
  • To post as a guest, your comment is unpublished.
    Hitesh · 1 years ago
    Loophole: Password can be seen by other person by using "View Code" option.