Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Запрет на редактирование ячейки задним числом - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Запрет на редактирование ячейки задним числом (Формулы/Formulas)
Запрет на редактирование ячейки задним числом
scryde2015 Дата: Четверг, 11.11.2021, 07:47 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 33
Репутация: 0 ±
Замечаний: 40% ±

Excel 2016
Здравствуйте.
Имеется табель по питанию. Ежедневно проставляются отсутствующие (ставится "н" в ячейку).
Как запретить редактирование/удаление содержимого ячейки задним числом ? Допустим, ставим сегодня (11.11.21) "н" Василию Пупкину (он сегодня не питался), Валерию Олеговичу мы оставляем в этот же день пустую ячейку (он питался). Завтра (12.11.21) нужно запретить редактировать ячейки за прошедшие даты.
Знаю, что это решается макросом, но, я к сожалению в этом не силен.
К сообщению приложен файл: 1__...xlsx (29.3 Kb)


Сообщение отредактировал scryde2015 - Четверг, 11.11.2021, 07:57
 
Ответить
СообщениеЗдравствуйте.
Имеется табель по питанию. Ежедневно проставляются отсутствующие (ставится "н" в ячейку).
Как запретить редактирование/удаление содержимого ячейки задним числом ? Допустим, ставим сегодня (11.11.21) "н" Василию Пупкину (он сегодня не питался), Валерию Олеговичу мы оставляем в этот же день пустую ячейку (он питался). Завтра (12.11.21) нужно запретить редактировать ячейки за прошедшие даты.
Знаю, что это решается макросом, но, я к сожалению в этом не силен.

Автор - scryde2015
Дата добавления - 11.11.2021 в 07:47
scryde2015 Дата: Четверг, 11.11.2021, 08:29 | Сообщение № 2
Группа: Пользователи
Ранг: Новичок
Сообщений: 33
Репутация: 0 ±
Замечаний: 40% ±

Excel 2016
Извините, только сейчас понял, что не в том разделе создал тему :(
Перенесите, пожалуйста, в раздел VBA
 
Ответить
СообщениеИзвините, только сейчас понял, что не в том разделе создал тему :(
Перенесите, пожалуйста, в раздел VBA

Автор - scryde2015
Дата добавления - 11.11.2021 в 08:29
Nic70y Дата: Четверг, 11.11.2021, 12:34 | Сообщение № 3
Группа: Друзья
Ранг: Экселист
Сообщений: 8759
Репутация: 2273 ±
Замечаний: 0% ±

Excel 2010
1) снимаем флаг защиты ячейки
2) в модуль книги
[vba]
Код
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Call u_745
End Sub
Private Sub Workbook_Open()
    Call u_745
End Sub
Sub u_745()
    Application.ScreenUpdating = False
    a = ActiveSheet.Name
    If a <> "календарь" Then
        Dim b As Double
        b = Date
        c = Evaluate("=MAX(IF((F9:AJ9<" & b & ")*(F9:AJ9<>""""),COLUMN(F9:AJ9)))")
        If c <> 0 Then
            ActiveSheet.Unprotect Password:="123"
            Range(Cells(12, 6), Cells(38, c)).Locked = True
            ActiveSheet.Protect Password:="123"
        End If
    End If
    Application.ScreenUpdating = True
End Sub
[/vba]123 - пароль защиты листа
К сообщению приложен файл: 1-.xlsm (31.4 Kb)


ЮMoney 41001841029809

Сообщение отредактировал Nic70y - Четверг, 11.11.2021, 12:42
 
Ответить
Сообщение1) снимаем флаг защиты ячейки
2) в модуль книги
[vba]
Код
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Call u_745
End Sub
Private Sub Workbook_Open()
    Call u_745
End Sub
Sub u_745()
    Application.ScreenUpdating = False
    a = ActiveSheet.Name
    If a <> "календарь" Then
        Dim b As Double
        b = Date
        c = Evaluate("=MAX(IF((F9:AJ9<" & b & ")*(F9:AJ9<>""""),COLUMN(F9:AJ9)))")
        If c <> 0 Then
            ActiveSheet.Unprotect Password:="123"
            Range(Cells(12, 6), Cells(38, c)).Locked = True
            ActiveSheet.Protect Password:="123"
        End If
    End If
    Application.ScreenUpdating = True
End Sub
[/vba]123 - пароль защиты листа

Автор - Nic70y
Дата добавления - 11.11.2021 в 12:34
scryde2015 Дата: Четверг, 11.11.2021, 13:44 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 33
Репутация: 0 ±
Замечаний: 40% ±

Excel 2016
Спасибо большое.
Можно ли сделать как-то привязку к месяцу ? Сейчас, например, добавил в табель октябрь, переключился на октябрь месяц, а редактировать могу так же, как и в ноябре, с 11 числа по 31. Можно это как-то обойти ? Чтобы предыдущие месяцы тоже нельзя было изменять ?
К сообщению приложен файл: 2241817.xlsm (29.9 Kb)


Сообщение отредактировал Serge_007 - Четверг, 11.11.2021, 13:49
 
Ответить
СообщениеСпасибо большое.
Можно ли сделать как-то привязку к месяцу ? Сейчас, например, добавил в табель октябрь, переключился на октябрь месяц, а редактировать могу так же, как и в ноябре, с 11 числа по 31. Можно это как-то обойти ? Чтобы предыдущие месяцы тоже нельзя было изменять ?

Автор - scryde2015
Дата добавления - 11.11.2021 в 13:44
_Igor_61 Дата: Четверг, 11.11.2021, 14:26 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 504
Репутация: 90 ±
Замечаний: 0% ±

Excel 2007
Чтобы предыдущие месяцы тоже нельзя было изменять ?
Поставьте листы с предыдущими месяцами под пароль и никому его не говорите :) Как только месяц кончился - лист под пароль от редактирования и стереть код VBA в модуле листа:)
В модуль листа:
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim i, rn As Range, lc&, lr&, d&
  Set rn = ActiveSheet.Range("F12:AJ38")
  Set i = Application.Intersect(rn, Target)
  lc = Target.Column
  lr = Target.Row
  d = Day(Now)
If i Is Nothing Then
    Exit Sub
Else
   If lc <> d Then
      Cells(lr, d + 5).Select
   End If
End If
End Sub
[/vba]
Курсор вернется на ячейку с сегодняшним днем :) Только обратите внимание на Set rn = ActiveSheet.Range("F12:AJ38" - строки и столбцы)
Обнаружилась загадка в файле ТС-а: столбец "K" не реагирует на событие листа, с остальными вроде нормально. Win7 Of2007. Это только у меня так?


Сообщение отредактировал _Igor_61 - Четверг, 11.11.2021, 17:45
 
Ответить
Сообщение
Чтобы предыдущие месяцы тоже нельзя было изменять ?
Поставьте листы с предыдущими месяцами под пароль и никому его не говорите :) Как только месяц кончился - лист под пароль от редактирования и стереть код VBA в модуле листа:)
В модуль листа:
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim i, rn As Range, lc&, lr&, d&
  Set rn = ActiveSheet.Range("F12:AJ38")
  Set i = Application.Intersect(rn, Target)
  lc = Target.Column
  lr = Target.Row
  d = Day(Now)
If i Is Nothing Then
    Exit Sub
Else
   If lc <> d Then
      Cells(lr, d + 5).Select
   End If
End If
End Sub
[/vba]
Курсор вернется на ячейку с сегодняшним днем :) Только обратите внимание на Set rn = ActiveSheet.Range("F12:AJ38" - строки и столбцы)
Обнаружилась загадка в файле ТС-а: столбец "K" не реагирует на событие листа, с остальными вроде нормально. Win7 Of2007. Это только у меня так?

Автор - _Igor_61
Дата добавления - 11.11.2021 в 14:26
китин Дата: Четверг, 11.11.2021, 15:20 | Сообщение № 6
Группа: Модераторы
Ранг: Экселист
Сообщений: 7014
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
В модуль листа и меняйте месяца как хотите

К сообщению приложен файл: scryde2015.xlsm (30.2 Kb)


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
СообщениеВ модуль листа и меняйте месяца как хотите


Автор - китин
Дата добавления - 11.11.2021 в 15:20
Nic70y Дата: Четверг, 11.11.2021, 20:14 | Сообщение № 7
Группа: Друзья
Ранг: Экселист
Сообщений: 8759
Репутация: 2273 ±
Замечаний: 0% ±

Excel 2010
scryde2015, все работает.
просто активируйте лист - перейдите на календарь, вернитесь на октябрь,
или закройте файл и откройте заново и создавайте столько листов, сколько нужно


ЮMoney 41001841029809
 
Ответить
Сообщениеscryde2015, все работает.
просто активируйте лист - перейдите на календарь, вернитесь на октябрь,
или закройте файл и откройте заново и создавайте столько листов, сколько нужно

Автор - Nic70y
Дата добавления - 11.11.2021 в 20:14
scryde2015 Дата: Пятница, 12.11.2021, 06:26 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 33
Репутация: 0 ±
Замечаний: 40% ±

Excel 2016
Спасибо всем огромное ! Работает как часы ! ^_^
 
Ответить
СообщениеСпасибо всем огромное ! Работает как часы ! ^_^

Автор - scryde2015
Дата добавления - 12.11.2021 в 06:26
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Запрет на редактирование ячейки задним числом (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!