Страницы: 1
RSS
Фиксация даты на изменения другой ячейки, защита данных ячейки от изменений следующим днем
 
Добрый день, прошу помочь с решением данной задачи.
Есть диапазон таблицы, в который вносятся данные ( с столбца Н и дальше), например  в столбце Н с 4 строки могут внести данные, а в Н3 автоматически поставится сегодняшняя дата .
Проблема заключается в - фиксации даты  и автоматической защите данных от изменений на следующий день.  
 
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("H4:M8")) Is Nothing Then
        Application.EnableEvents = False
        Cells(3, Target.Column) = Date
    End If
    Application.EnableEvents = True
End Sub
 
+ это
Код
Private Sub worksheet_Open()
  Dim c
  With Worksheets(1)
    .Unprotect
    For c = 8 To .Cells(3, Columns.Count).End(xlToLeft).Column
      If Not IsEmpty(.Cells(3, c)) And .Cells(3, c) < Date Then .Columns(c).Locked = True
    Next
    .Protect
  End With
End Sub
в модуль эта книга
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Спасибо, но почему-то  копирую макрос для защиты он не работает
 
в прикрепленном файле все работает так как нужно?
значит и в других будет работать так же. скопируйте макросы на свои места и
или
выполните 1 раз макрос worksheet_Open уже в новом файле
или
сохраните файл, закройте его, откройте его
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
В файле, при изменении даты  на календаре компьютера (например 25.04.17)  изменяет столбец  J, хотя дата там стоит 23.04.17
 
А вот так в новом файле макросы работают
 
В файле, при изменении даты  на календаре компьютера (например 25.04.17)  изменяет столбец  J, хотя дата там стоит 23.04.17
 
закройте, откройте файл
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Пробовали все равно не получается. Не защищает столбец с 23.04.2017
 
Вопрос актуален
 
вопрос не понятен

собственно что не работает,
или
как работает, а что ожидалось?
что не так? обьясняйте свою задачу сначала
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Заработает, когда Игорь объяснит, что за процедура в модуле книги у него такая - "worksheet_Open".
 
Влад,
спасибо!
извините, там опечатка. процедуру в модуле ЭтаКнига следует назвать WorkBook_Open
а магическое действие по закрытию и последующему открытию файла требовалось именно для того, чтобы сработала данная процедура, а с "кривым" названием она не могла срабатать автоматически((
Изменено: Ігор Гончаренко - 25.04.2017 15:05:06
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Со столбца Н4 пользователи вносят информацию, например 25.04.17 внесли данные в столбцы Н,, I. А 26.04.2017 уже не могли редактировать эти столбцы и так  на все последующие даты
Данный макрос  защитил только столбцы Н и I, а столбец . J с датой на 23.04.2017 не стал защищенным на следующий день, т.е. я могу его редактировать как и последующие столбцы с предыдущими датами.
При копировании макроса в новый файл, защита вообще не работает
Код
Private Sub worksheet_Open()  Dim c
  With Worksheets(1)
    .Unprotect
    For c = 8 To .Cells(3, Columns.Count).End(xlToLeft).Column
      If Not IsEmpty(.Cells(3, c)) And .Cells(3, c) < Date Then .Columns(c).Locked = True
    Next
    .Protect
  End With
End Sub
Изменено: Атан - 25.04.2017 15:49:39
 
а этот файл?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Почему то 12 столбец  сразу стоит защита от редактирования,  13 столбец нормально
И как лучше скопировать в новую книгу там почему - то сразу на весь лист стоит защита.
 
Атан, код следует оформлять соответствующим тегом. Ищите такую кнопку и исправьте своё сообщение.
 
а так...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Вроде бы работает, но только в Вашем файле, при копировании в другую книгу, ставит защиту на все ячейки. Можно это как - то исправить?
И еще если я вставлю приложенный макрос в "Эта книга", не будет сбой?
Отслежевание входа
Изменено: Атан - 25.04.2017 16:13:14
 
откройте первый лист
снимите с него защиту
отметьте ВСЕ ячейки
правая кнопка мыши. Формат ячеек
закладка Защита
уберите птичку защищаемая ячейка
Ок

это нужно сделать в новом файле 1 раз
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Здравствуйте нужен макрос который обновление данных вводит в следующую ячейку.
например водим данные в ячейку "А" она ставит в "В" дату - время - значение, при повторном
введении данных вводит новые данные в ячейку"С" - дату - время - значение, и так далее...
так же нужна функция учитывающая нажатие кнокпи Del = дата время "ячейка очищена"

так же нужен макрос защитить ячейки все которые без заливки
 
ProtAleks, здравия. Стол заказов в разделе Работа.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
Страницы: 1
Наверх