Добрый вечер! Подскажите , пожалуйста , возможно ли блокировать ячейки после ввода данных, чтобы дальнейшие изменения в этой ячейке были доступны только через ввод пароля.
Добрый вечер! Подскажите , пожалуйста , возможно ли блокировать ячейки после ввода данных, чтобы дальнейшие изменения в этой ячейке были доступны только через ввод пароля.ТАМИК
конечно. снять защиту с ячеек изначально, событие изменения ячеек, после внесения (проверка на пусто, если нужно) защитить ячейку [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A1:A1048576")) Is Nothing Then If Target.Count > 1 Then Exit Sub 'вот тута копипаст может подвести, _ поэтому нужен файл (наверное) If Target <> "" Then ActiveSheet.Unprotect Password:="123" Target.Locked = True ActiveSheet.Protect Password:="123" End If End If End Sub
[/vba]
конечно. снять защиту с ячеек изначально, событие изменения ячеек, после внесения (проверка на пусто, если нужно) защитить ячейку [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A1:A1048576")) Is Nothing Then If Target.Count > 1 Then Exit Sub 'вот тута копипаст может подвести, _ поэтому нужен файл (наверное) If Target <> "" Then ActiveSheet.Unprotect Password:="123" Target.Locked = True ActiveSheet.Protect Password:="123" End If End If End Sub
Ага. Именно такой вариант. Ну и еще принуждение к включению макросов, иначе все это не сработает. Мне надоело уже отдельный лист с воплем "Включи макросы!!!" делать. Немного более другой вариант. Вскрывается гораздо проще, чем отдельный лист, но зато прикольно В модуль листа [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Me.Unprotect ("Я не пишу заглавными буквами") For Each d In Target d.Locked = d <> "" Next d Me.Protect ("Я не пишу заглавными буквами") End Sub
[/vba] В модуль книги [vba]
Код
Dim n_ Private Sub Workbook_BeforeClose(Cancel As Boolean): rr: End Sub Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean): rr: End Sub Private Sub Workbook_Open(): tt: End Sub Sub tt(): n_ = 1: qq: End Sub Sub rr(): n_ = 0: qq: End Sub Sub qq() With ActiveWindow .Zoom = 10 ^ (n_ + 1) .DisplayGridlines = n_ .DisplayHeadings = n_ End With Application.DisplayFormulaBar = n_ End Sub
[/vba]
Пароль на VBA - "159" Пароль на лист "Я не пишу заглавными буквами"
Ага. Именно такой вариант. Ну и еще принуждение к включению макросов, иначе все это не сработает. Мне надоело уже отдельный лист с воплем "Включи макросы!!!" делать. Немного более другой вариант. Вскрывается гораздо проще, чем отдельный лист, но зато прикольно В модуль листа [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Me.Unprotect ("Я не пишу заглавными буквами") For Each d In Target d.Locked = d <> "" Next d Me.Protect ("Я не пишу заглавными буквами") End Sub
[/vba] В модуль книги [vba]
Код
Dim n_ Private Sub Workbook_BeforeClose(Cancel As Boolean): rr: End Sub Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean): rr: End Sub Private Sub Workbook_Open(): tt: End Sub Sub tt(): n_ = 1: qq: End Sub Sub rr(): n_ = 0: qq: End Sub Sub qq() With ActiveWindow .Zoom = 10 ^ (n_ + 1) .DisplayGridlines = n_ .DisplayHeadings = n_ End With Application.DisplayFormulaBar = n_ End Sub
[/vba]
Пароль на VBA - "159" Пароль на лист "Я не пишу заглавными буквами"_Boroda_
Можно. Но это уже намного сложнее всё. Нужен дополнительный суперскрытый лист, на котором будем писать дату и время для каждой измененной непустой ячейки и по событию выделения ячейки каждый раз проверять всю кучу этих ячеек на суточный диапазон. Это может подтормаживать (а при большом объеме и серьезно тормозить) работу с файлом
Можно. Но это уже намного сложнее всё. Нужен дополнительный суперскрытый лист, на котором будем писать дату и время для каждой измененной непустой ячейки и по событию выделения ячейки каждый раз проверять всю кучу этих ячеек на суточный диапазон. Это может подтормаживать (а при большом объеме и серьезно тормозить) работу с файлом_Boroda_
ТАМИК, скорей всего Вам не нужно контролировать все ячейки, а какой нибудь столбец(ы) / диапазон(ы). апдэйт: и скорей всего заполнение идет последовательно (мое предположение) Вы бы показали файл-пример.[offtop]
ТАМИК, скорей всего Вам не нужно контролировать все ячейки, а какой нибудь столбец(ы) / диапазон(ы). апдэйт: и скорей всего заполнение идет последовательно (мое предположение) Вы бы показали файл-пример.[offtop]