Блокировка ввода данных в ячейку при заданном условии. Ответ на вопрос подписчика poltorak

Вопрос от подписчика: poltorak

Всем доброго дня!
Что я уже сделал: Есть две разные ячейки. В 1-й ставиться постоянная дата. А  2-я загорается красным, при наступлении 30-го дня от постоянной даты.
И если ввести в эту 2-ю ячейку слово «продлено».То ячейка становиться белого цвета с текстом продлено.
Сделал формулу: =И(СЕГОДНЯ()-$A$2>=30;$F2<>»продлено»).
Потом я добавил 2-ю формулу : =ЕПУСТО($A$2). Для того чтобы когда 1-я ячейка пустая, то 2-я не загорается красным.
Нужно : чтобы во 2-ю ячейку нельзя было ввести  «продлено» раньше 30 дней(т.е. блокировало ввод).Но когда наступал срок, начинало работать моё 1-е правило.

Например: я ввожу слово «продлено» раньше 30 дней(срабатывает блокировка), когда подходит срок ячейка вторая загорается красным и я чтобы ячейка не горела пишу слово «продлено» и ячейка становится белой со словом продлено.
Ну очень нужна Ваша помощь!

Ответ на вопрос:

Вам поможет небольшой макрос, который будет запускаться при изменении  выделения на листе в диапазоне B:B и проверять  значение в ячейке справа.

Макрос защиты нужных ячеек приведен ниже:

Private Sub Worksheet_SelectionChange(ByVal Target As Range) ‘макрос запускается при изменении выделенного диапазона(при клике на новую ячейку)
Dim a As String
ActiveSheet.Unprotect ‘снимаем защиту с листа
a = «Взято с RuExcel.ru»
On Error Resume Next ‘обработка ошибок, на всякий случай
If Not Intersect(Target, Range(«B:B»)) Is Nothing Then ‘прверяем, чтобы срабатывапло только при клике на диапазон B:B
If Cells(ActiveCell.Row, (ActiveCell.Column — 1)).Value < DateAdd(«d», -30, Now) Then ‘если дата соответствует снимает защиту с активной ячейки
Range(ActiveCell, ActiveCell).Locked = False
Else
Range(ActiveCell, ActiveCell).Locked = True
End If

Else: Exit Sub ‘если кликнуть мимо диапазона В:В — выход из макроса
End If
ActiveSheet.Protect ‘защищаем лист
MsgBox (a) ‘выводим сообщение
End Sub

Добавить комментарий

Ваш адрес email не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.