|
0 / 0 / 0
Регистрация: 23.01.2021
Сообщений: 6
|
|
Запрет редактирования ячейки после определенной даты23.01.2021, 18:08. Показов 6132. Ответов 6
Метки нет (Все метки)
Добрый день! Есть таблица, в которую пользователи вводят свои данные. Подскажите как запретить вводить данные в отдельные ячейки после наступления определенной даты (например ячейку А1 можно редактировать с 01.01.21 по 10.02.21).
0
|
|
| 23.01.2021, 18:08 | |
|
Ответы с готовыми решениями:
6
При выборе даты в календаре - заполнять ячейки по порядку до определенной даты и рядом высвечивать день недели AdvTreeView (TMS) запрет редактирования ячейки
|
|
3947 / 2340 / 790
Регистрация: 02.11.2012
Сообщений: 6,220
|
|
| 25.01.2021, 12:19 | |
|
здесь макрос нужен.
0
|
|
|
Динохромный
1639 / 776 / 288
Регистрация: 22.12.2015
Сообщений: 2,422
|
|
| 25.01.2021, 17:31 | |
Сообщение было отмечено Narimanych как решение
Решение
Vnezapno987, когда-то я обсуждал примерно аналогичную задачу, только там была зависимость не от даты, а от пк, и нужно было также прятать столбцы.
Сделать невидимым выбранный столбец для конкретного пользователя Тут какие нюансы: 1. Если просто запретить редактирование через vba, то пользователь может например запретить выполнение макросов, и внести любое изменение, поэтому в коде реализовано обязательный запрет доступа перед каждым сохранением, что не очень удобно по быстродействию. 2. пароли достаточно легко взламываются специализированным софтом. 3. Дату на пк также можно поставить абсолютно произвольную, и спокойно открывать ваш файл. 4. Работать будет на версии 2010 и выше. С учетом вышеизложенных оговорок - можно чуть переделать алгоритм под вашу задачу. Приложите образец таблицы, укажите, какие ячейки не могут редактироваться и где будет прописано, когда какую ячейку редактировать можно/нельзя.
1
|
|
|
0 / 0 / 0
Регистрация: 23.01.2021
Сообщений: 6
|
|
| 26.01.2021, 22:30 [ТС] | |
|
Пользователи заполняют ячейки "По месяцам" (С4-N4). Смысл в том чтобы разрешить пользователю заполнять текущий месяц и месяца наперед (то есть, например, в январе можно заполнять все ячейки по декабрь), но при этом запретить редактировать уже прошедшие месяца(то есть в феврале пользователь не может редактировать январь и т.д.). Дату на пк пользователь менять не сможет, так что это не является проблемой, как, в принципе, и защита паролем.
0
|
|
|
0 / 0 / 0
Регистрация: 27.01.2021
Сообщений: 6
|
|
| 27.01.2021, 23:17 | |
|
Сделай так
Private Sub Workbook_Open() Dim nMonth As String Dim NameMonth As String Dim n As Byte Dim a As Variant nMonth = DatePart("m", Cells(1, 1)) 'nMonth = DatePart("m", Now) NameMonth = MonthName(nMonth) Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets ws.Cells.Interior.ColorIndex = 0 Next ws For n = 1 To 12 If NameMonth = Cells(3, 3) Then a = Range(Cells(4, n + 2), Cells(7, n + 2)).Address ActiveSheet.ScrollArea = a Range(a).Interior.Color = vbGreen Exit For ElseIf NameMonth = Cells(3, n + 2) Then a = Range(Cells(4, n + 1), Cells(7, n + 2)).Address ActiveSheet.ScrollArea = a Range(a).Interior.Color = vbGreen Exit For End If Next n End Sub Должно работать Добавлено через 9 минут Private Sub Workbook_Open() Dim nMonth As String Dim NameMonth As String Dim n As Byte Dim a As Variant nMonth = DatePart("m", Cells(1, 1)) 'nMonth = DatePart("m", Now) NameMonth = MonthName(nMonth) Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets ws.Cells.Interior.ColorIndex = 0 Next ws For n = 1 To 12 If NameMonth = Cells(3, n + 2) Then a = Range(Cells(4, n + 2), Cells(7, 14)).Address ActiveSheet.ScrollArea = a Range(a).Interior.Color = vbGreen Exit For End If Next n End Sub Не правильно прочитал задачу Так думаю пойдет
0
|
|
|
Динохромный
1639 / 776 / 288
Регистрация: 22.12.2015
Сообщений: 2,422
|
||
| 28.01.2021, 11:32 | ||
Сообщение было отмечено Vnezapno987 как решение
Решение1. Таблица должна располагаться на листе "1" с заголовком на том же месте. Если пользователь удалит этот лист и вставит вместо него отредактированную копию листа, то при срабатывании кода будет возникать ошибка, которая будет сигнализировать о несанкционированной замене листа. 2. Закрывается доступ к ячейкам начиная от А4 до последней непустой ячейки ниже (сама графа Название), а также ровно те же строчки по месяцам (то есть последней строчкой таблицы код считает по столбцу "А" - до первой пустой строки) 3. Если при открытии документа пользователь запретит выполнение макросов, то таблица будет полностью залочена, вынуждая пользователя запустить таки макросы. 4. Пароль для ручного снятия защиты с листа - "Frr656JkOp45Zz2" без кавычек. 5. В настоящее время проект VBA не запаролен, любой пользователь может найти пароль на лист по п.4 просто в тексте кода. Пароль на проект VBA ставьте самостоятельно (Alt+f11, контекстное меню по названию проекта в дереве слева, там свойства, в них пароль) 6. Поскольку сейчас январь, в коде указан параметр n (прибавка к текущему месяцу), равный двум, чтобы можно было оттестить работу кода. В нормальном состоянии поставьте n=0 7. Особенно не тестировал, это за вами. 8. Поскольку таблица как я понимаю по факту будет не совсем как в примере, уточняйте и комментируйте, что поменялось. 9. Снять пароли с листа и VBA не великая проблема.
1
|
||
|
0 / 0 / 0
Регистрация: 23.01.2021
Сообщений: 6
|
|
| 30.01.2021, 19:45 [ТС] | |
|
Большое спасибо за помощь, буду пробовать.
0
|
|
| 30.01.2021, 19:45 | |
|
Помогаю со студенческими работами здесь
7
макрос подсчета кол-ва дней при наличии даты в определенной ячейке и очистка ячейки с результатом при отсутствии даты Получить значение ячейки до и после редактирования? Очистка DataGridView после окончания редактирования ячейки
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|