0 / 0 / 0
Регистрация: 24.12.2009
Сообщений: 11
|
|
1 | |
Блокировать листы в Excel после определенной даты28.11.2017, 13:20. Показов 7988. Ответов 5
Добрый день,
Искала на просторах интернета решения по данному вопросу, но к сожалению конкретного работающего решения найти не смогла. У меня в документе excel несколько страниц - каждая страница это отчёт за один календарный день (к примеру, в ячейке F1 каждой страницы я записываю дату, за которую формируется отчёт). Соответственно, в документе Excel у меня примерно 30 листов. Нужно, чтобы excel блокировал листы для редактирования, дата которых больше одного дня текущего дня. (то есть вчерашний отчёт доступен для редактирования, а позавчерашний - нет). 1. Вариант, который проверяет все листы в книге, но он некорректный на мой взгляд. Sub Auto_Open() Dim y As Worksheet For Each y In ThisWorkbook.Worksheets y.EnableOutlining = True If DateSerial(Year(Date), Month(Date), 1) >= DateSerial(Year(wsSh.[F1]), Month(y.[F1]) + 1, 1) Then If Day(Now()) > 5 Then y.Protect Password:="8D5r2B1n2", UserInterfaceOnly:=True End If End If Next y 2. Вот более простой вариант на мой взгляд Private Sub Protect Dim n as Date, x as Object n=Range("F1") If Date()-n>1 then for each x in Sheets x.Cells. Locked=True x.ProtectPassword:="1234" end if end sub Но как в целом, оформить это, запуталась. Подскажите, пожалуйста, где ошибки и как лучше поступить в данной ситуации?
0
|
28.11.2017, 13:20 | |
Ответы с готовыми решениями:
5
Ограничение фунционала базы после определенной даты Запретить открытие документа после определенной даты Копировать одноименные листы из файлов Excel в один файл Excel Программа должна работать до определенной даты у пользователя, независимо, что он выставит в настройках даты и времени |
Заблокирован
|
||||||
28.11.2017, 14:50 | 2 | |||||
выбрать что-то дельное из обоих вариантов-
0
|
0 / 0 / 0
Регистрация: 24.12.2009
Сообщений: 11
|
|
28.11.2017, 17:19 [ТС] | 3 |
А если у меня на листах имеются уже заблокированные ячейки с формулами, то не наступит конфликта?
И эта программа будет правильно блокировать листы при открытии файла? Например, если человек работает с документом на протяжении двух дней...ему нужно будет после 00 часов 00 минут сохранять и закрывать отчёт, и затем снова открывать? Я скопировала, но странно: Excel позволяет редактировать старый отчёт, но блокирует отчёты за те дни, которые ещё не наступили... Что я неверно сделала?
0
|
Заблокирован
|
||||||
28.11.2017, 18:27 | 4 | |||||
Сообщение было отмечено KrisTal как решение
Решение
1. Данная процедура д.б. в одном из модулей группы Modules, а не в модуле ЭтаКнига
2. Добавим проверку, что в F1 находится дата 3. Уберем Private на всякий случай
1
|
0 / 0 / 0
Регистрация: 24.12.2009
Сообщений: 11
|
|
30.11.2017, 12:17 [ТС] | 5 |
У меня на листе есть заблокированные ячейки с формулами.
То есть я сначала отформатировала ячейки на листе как "незащищаемые", а потом ячейки с формулами сделала защищаемыми и заблокировала. Поэтому при запуске файла выходит ошибка. Как сделать так, чтобы он перед блокировкой листа разблокировал эти ячейки, а потом блокировал. Какую команду нужно использовать для этой проверки и разблокировки? Добавлено через 7 минут Ошибка: "Нельзя установить свойство Locked класса Range"
0
|
Заблокирован
|
||||||
30.11.2017, 21:10 | 6 | |||||
Сообщение было отмечено KrisTal как решение
Решение
1
|
30.11.2017, 21:10 | |
30.11.2017, 21:10 | |
Помогаю со студенческими работами здесь
6
Копировать листы из файлов Excel в один файл Excel При выборе даты в календаре - заполнять ячейки по порядку до определенной даты и рядом высвечивать день недели Перенос данных excel -excel на разные листы Блокировать диапазон ячеек макросом, в зависимости от текущей даты Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |