Нужна помощь!
В файле общего доступа (строка: A2:A500 - названия операций, название колонок B2:AF2 - даты месяца от 01.10.10 до 31.10.10, AG2:AG500 - % завершения операции) группа людей вносят данные (отработанные человеко-часы) через вызванную двойным щелчком по ячейке форму, в которой заодно и отмечают % завершения от планируемого. Эти данные (ч/ч автоматом прописываются в выделенную ячейку, % автоматом прописывается в ячейку колонки AG) записываются с нажатием кнопки "ВНЕСТИ ИЗМЕНЕНИЯ". Задача: необходим макрос, который после нажатия этой кнопки проверит %, и если значение =100%, то заблокирует от изменения ячейки от B до AG именно этой строки.
Включение защиты от изменений ячеек если ячейка в последнем столбце равна 100%
Модератор: Naeel Maqsudov
-
- Сообщения: 14
- Зарегистрирован: 23 сен 2010, 11:13
bietins
Сервис - Макрос - Начать запись.
Сервис - Защита - Защитить лист - выберите нужные пункты - окей.
Сервис - Макрос - Остановить запись.
Сервис - Макрос - Редактор Visual Basic.
Ищем Module1 в книге, в которой записывали макрос.
Сервис - Макрос - Начать запись.
Сервис - Защита - Защитить лист - выберите нужные пункты - окей.
Сервис - Макрос - Остановить запись.
Сервис - Макрос - Редактор Visual Basic.
Ищем Module1 в книге, в которой записывали макрос.
Код: Выделить всё
Sub Макрос1()
If FormatPercent(Range("A1").Value, 0) = FormatPercent("100%", 0) Then
MsgBox "В ячейке 100%"
End If
End Sub
Terminators писал(а):bietins
Сервис - Макрос - Начать запись.
Сервис - Защита - Защитить лист - выберите нужные пункты - окей.
Сервис - Макрос - Остановить запись.
Сервис - Макрос - Редактор Visual Basic.
Ищем Module1 в книге, в которой записывали макрос.Код: Выделить всё
Sub Макрос1() If FormatPercent(Range("A1").Value, 0) = FormatPercent("100%", 0) Then MsgBox "В ячейке 100%" End If End Sub
Не то
Во-первых - в книге с общим доступом лист не защитишь и этот макрос не работает, во-вторых - после запуска этого макроса защищается весь лист (если он конечно без общего доступа) даже если ни в какой ячейке нет100% (не появляется только MsgBox).
Может быть кто-то подскажет: может быть при открытии файла поставить автофильтр, который скроет строки если там стоит 100% и каким-то образом запретить снимать фильтр??? Вот только как?
Помогите, кто чем может

- VictorM
- Сообщения: 794
- Зарегистрирован: 23 окт 2006, 01:44
- Откуда: Lugansk, Ukraine
- Контактная информация:
то просто - выход с сообщением о невозможности продолжения.макрос, который после нажатия этой кнопки проверит %, и если значение =100%,
Код: Выделить всё
Sub tt()
iRow = ActiveCell.Row'вычисляем строку в которой будут вводиться данные
iProc = Range("AG" & iRow)'проверяем значение ячейки с процентами (100% =1)
If iProc = 1 Then
Call MsgBox("100%" _
& vbCrLf & "Ввод запрещен!" _
, vbExclamation, "100%")
Exit Sub
End If
End Sub
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
научите их ловить рыбу - и вы накормите их на всю жизнь".
VictorMVictorM писал(а):то просто - выход с сообщением о невозможности продолжения.Вставьте этот код в обработчик нажатия кнопкиКод: Выделить всё
Sub tt() iRow = ActiveCell.Row'вычисляем строку в которой будут вводиться данные iProc = Range("AG" & iRow)'проверяем значение ячейки с процентами (100% =1) If iProc = 1 Then Call MsgBox("100%" _ & vbCrLf & "Ввод запрещен!" _ , vbExclamation, "100%") Exit Sub End If End Sub
Отличное решение, вот только эти % можно изменить в самом столбце "%", а потом вводи ч/ч снова сколько хочешь.
Придется прописывать эти % в каком-то очень далеком столбце и просто-напросто скрыть его.
Может быть есть способ защитить ячейку с % в книге с общим доступом после внесения 100%?
VictorM писал(а):то просто - выход с сообщением о невозможности продолжения.Вставьте этот код в обработчик нажатия кнопкиКод: Выделить всё
Sub tt() iRow = ActiveCell.Row'вычисляем строку в которой будут вводиться данные iProc = Range("AG" & iRow)'проверяем значение ячейки с процентами (100% =1) If iProc = 1 Then Call MsgBox("100%" _ & vbCrLf & "Ввод запрещен!" _ , vbExclamation, "100%") Exit Sub End If End Sub
Спасибо, все работает отлично! с меня пиво
