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

Як захистити комірки на основі дати в 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-2021 і 365. Підтримує всі мови. Легке розгортання на вашому підприємстві чи в організації. 30-денна безкоштовна пробна версія повних функцій. 60-денна гарантія повернення грошей.
вкладка kte 201905

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

  • Увімкніть редагування та читання на вкладках у Word, Excel, PowerPoint, Publisher, Access, Visio та Project.
  • Відкривайте та створюйте кілька документів на нових вкладках того самого вікна, а не в нових вікнах.
  • Збільшує вашу продуктивність на 50% та зменшує сотні клацань миші для вас щодня!
дно офісної таблиці
Коментарі (30)
Поки немає оцінок. Оцініть першим!
Цей коментар був мінімізований модератором на сайті
Лазівка: пароль може побачити інша особа за допомогою параметра «Переглянути код».
Цей коментар був мінімізований модератором на сайті
не працює, оскільки всі клітинки показують повідомлення, але їх можна редагувати
Цей коментар був мінімізований модератором на сайті
Привіт, чи можна заблокувати стовпці за датою безпосередньо над стовпцями?
Цей коментар був мінімізований модератором на сайті
Private Subworksheet_Change(ByVal Target As Range)

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

«Підтримайте канал, зробивши пожертву http://patreon.com/excel10tutorial

Dim col As Range

«Встановіть правильну назву аркуша тут:

За допомогою ThisWorkbook.Sheets("AGOSTO-22")

.Зняти захист "ABCDE"

Для кожного стовпця In .UsedRange.Columns

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

Наступний кол

.Захистити "ABCDE"

.EnableSelection = xlNoRestrictions

Кінець з

End Sub
Цей коментар був мінімізований модератором на сайті
привіт, чи можна заблокувати певні клітинки залежно від дати, яка знаходиться безпосередньо над ними в стовпці?
Цей коментар був мінімізований модератором на сайті
Привіт, Лусіс,
Чи можете ви описати свою проблему більш конкретно? Або ви можете додати знімок екрана як свою проблему.
Дякую!
Цей коментар був мінімізований модератором на сайті
Привіт Скайян

Так, ось скріншот. Сподіваюся, це допоможе.
Цей коментар був мінімізований модератором на сайті
Цей коментар був мінімізований модератором на сайті
Привіт, Люцис,
Ви маєте на увазі заблокувати стовпці, дата яких минула, і можна змінити лише стовпці сьогоднішніх і майбутніх днів?
Цей коментар був мінімізований модератором на сайті
Правильно! Як би я ставився до цього?
Цей коментар був мінімізований модератором на сайті
Привіт, Луїс,
Як щодо комірки дати в A1? Це введено вручну чи за допомогою формули =now()? Якщо це клітинка формули, заблоковані стовпці будуть змінені зі зміною дати.
Чекаємо Вашої відповіді!
Цей коментар був мінімізований модератором на сайті
Привіт, Скайянг

так, клітинка A1 має формулу =now().

спасибі!
Цей коментар був мінімізований модератором на сайті
Привіт.....


Я використовую код для захисту всіх рядків, крім сьогоднішнього рядка з датою........



Приватний додатковий аркуш_SelectionChange(ByVal Target As Range)
'Оновлення Extendoffice 20161025
Якщо діапазон("A" & Selection.Row).Значення <> Дата Тоді
ActiveSheet.Protect Password:="111111"
MsgBox "Можна редагувати лише рядок сьогоднішньої дати!", vbInformation, "Kutools для Excel"
ElseIf Range("E" & Selection.Row).Value = Дата Тоді
ActiveSheet.Unprotect Password:="111111"
ActiveSheet.EnableSelection = xlNoRestrictions
End If
End Sub


Після того, як я збережу i та натисну клітинку, я отримую повідомлення, лише сьогоднішній рядок дати можна відредагувати....але якщо я двічі клацну клітинку, я можу редагувати... допоможіть будь ласка
Цей коментар був мінімізований модератором на сайті
Це чудово працює. але як я можу перемкнути його, щоб розблокувати стовпець на основі дат у рядку 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 містить дату, будь ласка, змініть його відповідно до ваших потреб.)

Приватний додатковий аркуш_SelectionChange(ByVal Target As Range)
Dim xRg As Range
Установіть xRg = Target.Worksheet.Cells(5, Target.Column)
Якщо xRg <> Дата Тоді
ActiveSheet.Protect Password:="111111"
MsgBox "Можна редагувати лише рядок сьогоднішньої дати!", vbInformation, "Kutools для Excel"
ElseIf xRg.Value = Дата Тоді
ActiveSheet.Unprotect Password:="111111"
ActiveSheet.EnableSelection = xlNoRestrictions
End If
End Sub

Будь ласка, спробуйте, сподіваюся, це допоможе вам!
Цей коментар був мінімізований модератором на сайті
Дякую! Вибачте, я не отримав вашої відповіді досі, можливо, проблема в моїй електронній пошті.

Це спрацювало! Не можу сказати достатньо спасибі! Я дуже ціную це!
Цей коментар був мінімізований модератором на сайті
привіт,
Раді, що це може вам допомогти!
Цей коментар був мінімізований модератором на сайті
привіт,

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

Я додав зразок аркуша тижня, де користувач не може редагувати чи вводити стовпці, крім цього тижня.

Будь-які поради щодо цього? чи я маю використовувати фактичні дати для відображення дня місяця?
Цей коментар був мінімізований модератором на сайті
Дякую за вашу допомогу, дуже дякую, друже, це чудова допомога. і вирішив мою напругу.
Будьте безпечні
З повагою, Рохіт Ханна
Цей коментар був мінімізований модератором на сайті
Привіт. Я зіткнувся з однією проблемою: як тільки я закриваю файл і знову відкриваю його в той же день, код не працює. будь ласка, допоможіть я застряг
Цей коментар був мінімізований модератором на сайті
Привіт, Рохіт,
Щоб зберегти код, ви повинні зберегти свою книгу у форматі книги Excel з підтримкою макросів. Спробуйте, дякую!
Цей коментар був мінімізований модератором на сайті
привіт, я це зробив, але коли я натискаю клітинку, повідомлення показує, що його не можна редагувати, але коли я натискаю клавішу, я все ще можу писати в клітинку
Цей коментар був мінімізований модератором на сайті
Привіт, я хотів би захистити майбутні дні та дозволити редагувати поточні та минулі дні. Як мені це зробити?
Цей коментар був мінімізований модератором на сайті
Привіт, Мігель! Щоб захистити майбутні дні, будь ласка, застосуйте наведений нижче код: Приватний допоміжний робочий лист_Зміна (за значенням цілі як Excel. Діапазон)
'Оновлення Extendoffice
Dim xRow As Long
xРяд = 2
ThisWorkbook.ActiveSheet.Unprotect Password:="111111"
ThisWorkbook.ActiveSheet.Cells.Locked = False
Робити до тих пір, поки не буде порожній (Cells(xRow, 5))
Якщо клітинки(xRow, 5) > Дата, то
Рядки(xRow).Заблоковано = True
End If
xРядок = xРядок + 1
Петля
ThisWorkbook.ActiveSheet.Protect Password:="111111"
End Sub. Будь ласка, спробуйте, сподіваюся, це допоможе вам!
There are no comments posted here yet
Залишайте свої коментарі
Публікація як гість
×
Оцініть цю публікацію:
0   Персонажі
Рекомендовані місця

Слідуй за нами

Copyright © 2009 - WWW.extendoffice.com. | Всі права захищені. На основі ExtendOffice. | Карта сайту
Microsoft та логотип Office є товарними знаками або зареєстрованими товарними знаками Microsoft Corporation у США та / або інших країнах.
Захищений Sectigo SSL