Страница 1 из 1

Включение защиты от изменений ячеек если ячейка в последнем столбце равна 100%

Добавлено: 19 ноя 2010, 17:03
bietins
Нужна помощь!

В файле общего доступа (строка: A2:A500 - названия операций, название колонок B2:AF2 - даты месяца от 01.10.10 до 31.10.10, AG2:AG500 - % завершения операции) группа людей вносят данные (отработанные человеко-часы) через вызванную двойным щелчком по ячейке форму, в которой заодно и отмечают % завершения от планируемого. Эти данные (ч/ч автоматом прописываются в выделенную ячейку, % автоматом прописывается в ячейку колонки AG) записываются с нажатием кнопки "ВНЕСТИ ИЗМЕНЕНИЯ". Задача: необходим макрос, который после нажатия этой кнопки проверит %, и если значение =100%, то заблокирует от изменения ячейки от B до AG именно этой строки.

Re: Включение защиты от изменений ячеек если ячейка в последнем столбце равна 100%

Добавлено: 19 ноя 2010, 18:01
Terminators
bietins
Сервис - Макрос - Начать запись.
Сервис - Защита - Защитить лист - выберите нужные пункты - окей.
Сервис - Макрос - Остановить запись.
Сервис - Макрос - Редактор Visual Basic.
Ищем Module1 в книге, в которой записывали макрос.

Код: Выделить всё

Sub Макрос1()
If FormatPercent(Range("A1").Value, 0) = FormatPercent("100%", 0) Then
    MsgBox "В ячейке 100%"
End If
End Sub

Re: Включение защиты от изменений ячеек если ячейка в последнем столбце равна 100%

Добавлено: 19 ноя 2010, 23:22
bietins
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% и каким-то образом запретить снимать фильтр??? Вот только как?
Помогите, кто чем может :) !!!

Re: Включение защиты от изменений ячеек если ячейка в последнем столбце равна 100%

Добавлено: 20 ноя 2010, 00:06
VictorM
макрос, который после нажатия этой кнопки проверит %, и если значение =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
Вставьте этот код в обработчик нажатия кнопки

Re: Включение защиты от изменений ячеек если ячейка в последнем столбце равна 100%

Добавлено: 20 ноя 2010, 11:43
bietins
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
Вставьте этот код в обработчик нажатия кнопки
VictorM
Отличное решение, вот только эти % можно изменить в самом столбце "%", а потом вводи ч/ч снова сколько хочешь.
Придется прописывать эти % в каком-то очень далеком столбце и просто-напросто скрыть его.
Может быть есть способ защитить ячейку с % в книге с общим доступом после внесения 100%?

Re: Включение защиты от изменений ячеек если ячейка в последнем столбце равна 100%

Добавлено: 20 ноя 2010, 14:37
bietins
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
Вставьте этот код в обработчик нажатия кнопки

Спасибо, все работает отлично! с меня пиво :D