Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Защита от изменения сохраненных данных таблицы, с возможностью копирования их и редактирования новых данных
 
есть макрос по защите введенных данных от изменения...просьба помочь доработать.
допустим есть таблица-данные вводятся просто копированием ранее введенных строк с посл. изменением ,либо макросом их дублирования , либо введением посто вручную новых...
требуется защитить уже сохраненные данные от изменений, при условиях- первое,что защита не распостраняеться на строки со значением в столбце2 = 2 (во всей таблице в стролбце 2 значения либо 1 либо 2(других значений нет), и второе, должна быть возможность копирования защищенных строк (по одной и несколько сразу) с последующим их изменением (до сохранения).
 
возможно не корректно поставил задачу...попробую подкорректировать.
имеем таблицу. в столбце 2 все строки отмечены либо 1 либо 2, те что отмечены 1 защищены (от изменения значений ячеек, удаления, перемещения) но что бы была возможность их копировать и вставлять вниз таблицы, до закрытия книги вновь вставленые строки (ячейки) можно корректировать значения, удалять и тд., (после сохранения при закрытии и открытия книги они становятся защищенными если отмечены 1 в столбце2) строки отмеченные 2 не защищены вообще и с ними можно делать что угодно.
так же помимо ручного копирования - вставки строк , что бы осталась возможность копирования и вставки строк макросом (макрос работает так --- выделяются строки и при нажатии кнопки строки дублируются внизу таблицы)
как то так.

привязываться к тому макросу что в книге не обязательно....
в нем не устраивает то , что он защищает все ячейки таблицы и не только...а нужно чтобы только ячейки таблицы! отмеченные 1 в столбце 2. если не напряжно можете предложить свой вариант.
спасибо
 
Денис Михолап,
как вариант:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("B:B")) Is Nothing Then
If Target = 1 Then

ActiveSheet.Unprotect Password:="1"
 
Range(Cells(Target.Row, 1), Cells(Target.Row, 10)).Locked = True

ActiveSheet.Protect Password:="1", DrawingObjects:=True, Contents:=True, Scenarios:=True, _
AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowFiltering:=True, UserInterfaceOnly:=True

ElseIf Target = 2 Then

ActiveSheet.Unprotect Password:="1"

Range(Cells(Target.Row, 1), Cells(Target.Row, 10)).Locked = False

ActiveSheet.Protect Password:="1", DrawingObjects:=True, Contents:=True, Scenarios:=True, _
AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowFiltering:=True, UserInterfaceOnly:=True

End If
End If
End Sub
 
спасибо...
но склоняюсь вот этим воспользоваться.
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)    r = Target.Row
    If Cells(r, 2).Value = 1 Then
    Range("A1").Activate
    Exit Sub
    End If
End Sub
только подскажите а как сделать чтоб этот макрос по событию включать отключать с кнопки?
Страницы: 1
Читают тему (гостей: 1)
Наверх