Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/бЛОКИРОВАТЬ ЯЧЕЙКУ ПОСЛЕ ВВОДА ДАННЫХ - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » бЛОКИРОВАТЬ ЯЧЕЙКУ ПОСЛЕ ВВОДА ДАННЫХ (Формулы/Formulas)
бЛОКИРОВАТЬ ЯЧЕЙКУ ПОСЛЕ ВВОДА ДАННЫХ
ТАМИК Дата: Вторник, 04.12.2018, 19:09 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 74
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Добрый вечер!
Подскажите , пожалуйста , возможно ли блокировать ячейки после ввода данных, чтобы дальнейшие изменения в этой ячейке были доступны только через ввод пароля.
 
Ответить
СообщениеДобрый вечер!
Подскажите , пожалуйста , возможно ли блокировать ячейки после ввода данных, чтобы дальнейшие изменения в этой ячейке были доступны только через ввод пароля.

Автор - ТАМИК
Дата добавления - 04.12.2018 в 19:09
Nic70y Дата: Вторник, 04.12.2018, 19:24 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 8759
Репутация: 2273 ±
Замечаний: 0% ±

Excel 2010
конечно.
снять защиту с ячеек изначально,
событие изменения ячеек,
после внесения (проверка на пусто, если нужно) защитить ячейку
[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]


ЮMoney 41001841029809

Сообщение отредактировал Nic70y - Вторник, 04.12.2018, 19:47
 
Ответить
Сообщениеконечно.
снять защиту с ячеек изначально,
событие изменения ячеек,
после внесения (проверка на пусто, если нужно) защитить ячейку
[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]

Автор - Nic70y
Дата добавления - 04.12.2018 в 19:24
_Boroda_ Дата: Вторник, 04.12.2018, 19:57 | Сообщение № 3
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Ага. Именно такой вариант. Ну и еще принуждение к включению макросов, иначе все это не сработает. Мне надоело уже отдельный лист с воплем "Включи макросы!!!" делать. Немного более другой вариант. Вскрывается гораздо проще, чем отдельный лист, но зато прикольно
В модуль листа
[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"
Пароль на лист "Я не пишу заглавными буквами"
К сообщению приложен файл: 871317.xlsm (17.2 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеАга. Именно такой вариант. Ну и еще принуждение к включению макросов, иначе все это не сработает. Мне надоело уже отдельный лист с воплем "Включи макросы!!!" делать. Немного более другой вариант. Вскрывается гораздо проще, чем отдельный лист, но зато прикольно
В модуль листа
[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_
Дата добавления - 04.12.2018 в 19:57
ТАМИК Дата: Вторник, 04.12.2018, 21:19 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 74
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Спасибо большое. Буду пытаться перенести на свой файл.
 
Ответить
СообщениеСпасибо большое. Буду пытаться перенести на свой файл.

Автор - ТАМИК
Дата добавления - 04.12.2018 в 21:19
ТАМИК Дата: Вторник, 04.12.2018, 21:24 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 74
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
А ещё такой вопрос можно его дополнить по времени например в течении 24 часов строку ещё можно менять, или такое невозможно?
 
Ответить
СообщениеА ещё такой вопрос можно его дополнить по времени например в течении 24 часов строку ещё можно менять, или такое невозможно?

Автор - ТАМИК
Дата добавления - 04.12.2018 в 21:24
_Boroda_ Дата: Вторник, 04.12.2018, 23:17 | Сообщение № 6
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Можно. Но это уже намного сложнее всё. Нужен дополнительный суперскрытый лист, на котором будем писать дату и время для каждой измененной непустой ячейки и по событию выделения ячейки каждый раз проверять всю кучу этих ячеек на суточный диапазон. Это может подтормаживать (а при большом объеме и серьезно тормозить) работу с файлом


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеМожно. Но это уже намного сложнее всё. Нужен дополнительный суперскрытый лист, на котором будем писать дату и время для каждой измененной непустой ячейки и по событию выделения ячейки каждый раз проверять всю кучу этих ячеек на суточный диапазон. Это может подтормаживать (а при большом объеме и серьезно тормозить) работу с файлом

Автор - _Boroda_
Дата добавления - 04.12.2018 в 23:17
Nic70y Дата: Среда, 05.12.2018, 10:12 | Сообщение № 7
Группа: Друзья
Ранг: Экселист
Сообщений: 8759
Репутация: 2273 ±
Замечаний: 0% ±

Excel 2010
ТАМИК, скорей всего Вам не нужно контролировать все ячейки,
а какой нибудь столбец(ы) / диапазон(ы).
апдэйт: и скорей всего заполнение идет последовательно (мое предположение)
Вы бы показали файл-пример.[offtop]
"Я не пишу заглавными буквами"
здесь ошибка.
[/offtop]


ЮMoney 41001841029809

Сообщение отредактировал Nic70y - Среда, 05.12.2018, 10:17
 
Ответить
СообщениеТАМИК, скорей всего Вам не нужно контролировать все ячейки,
а какой нибудь столбец(ы) / диапазон(ы).
апдэйт: и скорей всего заполнение идет последовательно (мое предположение)
Вы бы показали файл-пример.[offtop]
"Я не пишу заглавными буквами"
здесь ошибка.
[/offtop]

Автор - Nic70y
Дата добавления - 05.12.2018 в 10:12
Мир MS Excel » Вопросы и решения » Вопросы по Excel » бЛОКИРОВАТЬ ЯЧЕЙКУ ПОСЛЕ ВВОДА ДАННЫХ (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!