Note: The other languages of the website are Google-translated. Back to English
Увійти  \/ 
x
or
x
Реєстрація  \/ 
x

or

Як захистити комірки на основі дати в Excel?

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

doc захистити за датою 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

doc захистити за датою 2

примітки: У наведеному вище коді буква E - заголовок стовпця, де розташована дата, “111111”- це пароль для захисту цього аркуша. Ви можете змінити їх відповідно до своїх потреб.

2. Потім збережіть і закрийте це вікно коду.

(1.) Якщо натиснути інші клітинки, що перевищують сьогоднішній рядок дат, з’явиться підказка з нагадуванням, що клітинку не можна редагувати, див. Знімок екрана:

doc захистити за датою 3

(2.) Якщо натиснути та редагувати рядок, що дорівнює сьогоднішній даті, його буде успішно змінено, див. Знімок екрана:

doc захистити за датою 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

doc захистити за датою 5

примітки: У наведеному вище коді номер 5 номер стовпця, де розташована дата, “111111”- це пароль для захисту цього аркуша. Ви можете змінити їх відповідно до своїх потреб.

3. Потім збережіть і закрийте це вікно коду.

(1.) Якщо натиснути дату клітинки минуло, з’явиться підказка з нагадуванням про те, що клітинку не можна редагувати, див. Знімок екрана:

doc захистити за датою 6

(2.) Якщо клацнути клітинку рядків, щоб спробувати змінити значення сьогоднішньої або майбутньої дати, вона буде успішно змінена, див. Знімок екрана:

doc захистити за датою 7


Найкращі інструменти для підвищення продуктивності офісу

Kutools для Excel вирішує більшість ваших проблем і збільшує продуктивність на 80%

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

Вкладка Office забезпечує інтерфейс з вкладками для Office і значно спрощує вашу роботу

  • Увімкніть редагування та читання на вкладках у Word, Excel, PowerPoint, Publisher, Access, Visio та Project.
  • Відкривайте та створюйте кілька документів на нових вкладках того самого вікна, а не в нових вікнах.
  • Збільшує вашу продуктивність на 50% та зменшує сотні клацань миші для вас щодня!
дно офісної таблиці
Say something here...
symbols left.
You are guest
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.
    Miguel · 10 months ago
    Hello, I would like to protect future days and allow editing current and past days. How do I do that?
    • To post as a guest, your comment is unpublished.
      skyyang · 10 months ago
      Hello, Miguel,
      To protect the future days, please apply the below code:
      Private Sub Worksheet_Change(ByVal Target As Excel.Range) 'Updateby Extendoffice 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
      Please try, hope it can help you!
  • To post as a guest, your comment is unpublished.
    avtandil · 1 years ago
    hello i did it but when i press cell message shows that it can not be edited but when i press keyborad i still can write in the cell

  • To post as a guest, your comment is unpublished.
    mouzahem · 1 years ago
    Hello, I tried to do the same but to Protect all columns except today’s date column with VBA code by replacing "Selection.Row" with "Selection.Columns" and "E" with "5" (row number where dates are), but I keep receiving error 1004!

    Any help please?

    Thank you
    • To post as a guest, your comment is unpublished.
      skyyang · 1 years ago
      Hello,
      To apply this code to columns that you need, please use the following VBA code:(Note: In the code, 5 is the row number contains the date, please change it to your need.)

      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      Dim xRg As Range
      Set xRg = Target.Worksheet.Cells(5, Target.Column)
      If xRg <> Date Then
      ActiveSheet.Protect Password:="111111"
      MsgBox "Only today's date row can be edited!", vbInformation, "Kutools for Excel"
      ElseIf xRg.Value = Date Then
      ActiveSheet.Unprotect Password:="111111"
      ActiveSheet.EnableSelection = xlNoRestrictions
      End If
      End Sub

      Please try, hope it can help you!
      • To post as a guest, your comment is unpublished.
        rohit Khanna · 1 years ago
        Hi Im facing one problem, once i close the file and reopens it again on the same date, code doesnot work. pls help im stuck

        • To post as a guest, your comment is unpublished.
          skyyang · 1 years ago
          Hi, rohit,
          To keep the code, you should save your workbook as Excel Macro-Enabled Workbook format, please try, thank you!
      • To post as a guest, your comment is unpublished.
        rohit Khanna · 1 years ago
        Thanks for your help, Thanku so much buddy, It is a great help. and solved my tension.

        Be safe

        Regards
        Rohit Khanna
      • To post as a guest, your comment is unpublished.
        youssef · 1 years ago
        Thank you! Sorry, I did not get your reply until now, it might be a problem in my email.

        It worked! Can't say thank you enough! I really appreciate that!
        • To post as a guest, your comment is unpublished.
          skyyang · 1 years ago
          Hi,
          Glad it can help you!
          • To post as a guest, your comment is unpublished.
            mouzahem · 1 years ago
            Hi,

            I am trying to expand this to protect columns that do not include this current month or/and this current week. I tried to replace "Date" with "month" or "week", but did not work.

            I have attached a sample for weeks sheet where user cannot edit or type in columns other than this week.

            Any advice on that? or shall I use actual dates to reflect a day in the month?
  • To post as a guest, your comment is unpublished.
    Youssef · 1 years ago
    Hello, I tried to do the same but to Protect all columns except today’s date column with VBA code by replacing "Selection.Row" with "Selection.Columns" and "E" with "5" (row number where dates are), but I keep receiving error 1004!

    Any help please?

    Thank you
  • To post as a guest, your comment is unpublished.
    deokarkaran · 2 years 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 · 2 years 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 · 2 years 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 · 2 years ago
      because in row no. 1 you have header
  • To post as a guest, your comment is unpublished.
    Bobby · 3 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.
    tajindia52@gmail.com · 3 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.
    lmg777 · 4 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 · 4 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.
        lmg777 · 4 years ago
        Hi skyyang

        Yes here is a screenshot. Hope this helps.
        • To post as a guest, your comment is unpublished.
          lmg777 · 4 years ago
          Here it is.
          • To post as a guest, your comment is unpublished.
            skyyang · 4 years ago
            Hello, Lucis,
            Do you mean to lock the columns which date is past, and only the columns of today and future days can be modified?
            • To post as a guest, your comment is unpublished.
              lmg777 · 4 years ago
              Correct! How would I go about that?
              • To post as a guest, your comment is unpublished.
                skyyang · 4 years ago
                Hi, Luis,
                How about the date cell in A1? Is it entered manually or entered with a formula =now()? If it is a formula cell, the locked columns will be changed with the date changes.
                Looking forward to your reply!
                • To post as a guest, your comment is unpublished.
                  lmg777 · 4 years ago
                  Hi Skyyangg

                  yes the cell A1 has the =now() formula.

                  thanks!
  • To post as a guest, your comment is unpublished.
    Lmg · 4 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 · 4 years ago
    Loophole: Password can be seen by other person by using "View Code" option.