Здравствуйте, подскажите пожалуйста, как заполнять таблицу через созданную форму если лист заблокирован? http://www.excelworld.ru/forum/10-41619-1 Спасибо K-SerJC, все работает, но единственное что нельзя заполнять пустые строки через созданную форму, как можно изменить данный код? Размер файла превышает, не знаю как сюда выложить, этот файл есть тут http://www.cyberforum.ru/vba/thread2442552.html#post13520335
[/vba] Но данный параметр действует только в пределах одного сеанса, т.е. после повторного открытия книги нужно хотябы раз выполнить данную команду. Лучше прописать на событие Workbook_Open
DKeT,
[vba]
Код
Me.Protect UserInterfaceOnly:=True
[/vba] Но данный параметр действует только в пределах одного сеанса, т.е. после повторного открытия книги нужно хотябы раз выполнить данную команду. Лучше прописать на событие Workbook_Openboa
DKeT, Конкретно на вашем файле в модуль книги [vba]
Код
Private Sub Workbook_Open() Sheets(1).Protect UserInterfaceOnly:=True End Sub
[/vba]
в модуль листа[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Me.ProtectContents = False Then Exit Sub If Target.Value <> "" Then Target.Locked = True End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Locked And Me.ProtectContents Then If MsgBox("В ячейке есть значение, желаете изменить?", vbYesNo) = vbYes Then Application.EnableEvents = False Target.Value = InputBox("Введите новое значение", , Target.Value) Application.EnableEvents = True End If: End If: End Sub
[/vba]
DKeT, Конкретно на вашем файле в модуль книги [vba]
Код
Private Sub Workbook_Open() Sheets(1).Protect UserInterfaceOnly:=True End Sub
[/vba]
в модуль листа[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Me.ProtectContents = False Then Exit Sub If Target.Value <> "" Then Target.Locked = True End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Locked And Me.ProtectContents Then If MsgBox("В ячейке есть значение, желаете изменить?", vbYesNo) = vbYes Then Application.EnableEvents = False Target.Value = InputBox("Введите новое значение", , Target.Value) Application.EnableEvents = True End If: End If: End Sub
Target.Value = InputBox("Введите новое значение", , Target.Value)
[/vba] и так же пишет что лист защищен, а может можно как то сделать, чтоб он был незащищенным, а такая запись выходила только на те строки которые заполнены?
boa, выдает ошибку на [vba]
Код
Target.Value = InputBox("Введите новое значение", , Target.Value)
[/vba] и так же пишет что лист защищен, а может можно как то сделать, чтоб он был незащищенным, а такая запись выходила только на те строки которые заполнены?DKeT
после того как вставите макросы в модули, в первую очередь выполните Workbook_Open, а уж только потом клацайте по защищенному листу. а снимать и ставить защиту после каждого действия просто не рационально
после того как вставите макросы в модули, в первую очередь выполните Workbook_Open, а уж только потом клацайте по защищенному листу. а снимать и ставить защиту после каждого действия просто не рациональноboa