Note: The other languages of the website are Google-translated. Back to English

Как заблокировать или защитить ячейки после ввода данных или ввода в Excel?

Предположим, у вас есть рабочий лист, и только определенный диапазон пустых ячеек требует ввода данных, и после завершения ввода данных вам нужно, чтобы ячейки были автоматически заблокированы, чтобы предотвратить повторные изменения. Как вы можете этого добиться? Эта статья может вам помочь.

Блокировать или защищать ячейки после ввода данных или ввода с помощью кода VBA


Блокировать или защищать ячейки после ввода данных или ввода с помощью кода VBA

Например, определенный диапазон пустых ячеек - A1: F8. Чтобы заблокировать эти ячейки после ввода данных в Excel, сделайте следующее.

1. Сначала разблокируйте этот диапазон, выберите ячейки и щелкните правой кнопкой мыши, затем выберите Формат ячеек в контекстном меню и в Формат ячеек диалоговое окно, сняв флажок Заблокированный поле под защиту вкладка и, наконец, щелкнув OK кнопка. Смотрите скриншот:

2. Нажмите Обзор > Защитить лист. И укажите пароль для защиты этого рабочего листа.

3. Щелкните правой кнопкой мыши вкладку листа и выберите Просмотреть код из контекстного меню. Затем скопируйте и вставьте приведенный ниже код VBA в окно кода. Смотрите скриншот:

Код VBA: блокировка или защита ячеек после ввода или ввода данных

Dim mRg As Range
Dim mStr As String

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Range("A1:F8"), Target) Is Nothing Then
    Set mRg = Target.Item(1)
    mStr = mRg.Value
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim xRg As Range
    On Error Resume Next
    Set xRg = Intersect(Range("A1:F8"), Target)
    If xRg Is Nothing Then Exit Sub
    Target.Worksheet.Unprotect Password:="123"
    If xRg.Value <> mStr Then xRg.Locked = True
    Target.Worksheet.Protect Password:="123" 
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Range("A1:F8"), Target) Is Nothing Then
    Set mRg = Target.Item(1)
     mStr = mRg.Value
End If
End Sub

Внимание: В коде «A1: F8» - это диапазон, который вам нужен для ввода данных; и «123» - пароль этого защищенного рабочего листа. Пожалуйста, измените их по своему усмотрению.

4. Нажмите другой + Q клавиши одновременно, чтобы закрыть Microsoft Visual Basic для приложений окно.

После завершения ввода данных в ячейки диапазона A1: F8 они будут заблокированы автоматически. И вы получите диалоговое окно с запросом, если попытаетесь изменить содержимое любой ячейки этого диапазона. Смотрите скриншот:


Статьи по теме:


Лучшие инструменты для работы в офисе

Kutools for Excel решает большинство ваших проблем и увеличивает вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма ...
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон...
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы... Предотвращение дублирования ячеек; Сравнить диапазоны...
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор ...
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое ...
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии...
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом ...
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF...
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
вкладка kte 201905

Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
офисный дно
Сортировать комментарии по
Комментарии (74)
Номинальный 5 из 5 · рейтинги 1
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте, у меня есть электронная таблица с диапазоном A3:AN219, я хотел бы защитить этот диапазон по мере завершения ввода. Пожалуйста помоги мне с этим. Я пробовал код выше, но он у меня не работает
Этот комментарий был сведен к минимуму модератором на сайте
Это не работает при повторном открытии файла excel, пожалуйста, помогите
Этот комментарий был сведен к минимуму модератором на сайте
Вместо этого попробуйте этот код: Private Sub Worksheet_Change(ByVal Target As Range) Dim MyRange As Range Set MyRange = Intersect(Range("A1:D100"), Target) If Not MyRange Is Nothing Then Sheets("Sheet1"). Снимите защиту паролем: ="hello" MyRange.Locked = True Sheets("Sheet1").Защитить паролем:="hello" End If End Sub И не забудьте изменить диапазон (A1:D100), пароль (hello) и имена/номера листов (Sheet1) если это не соответствует вышесказанному :)
Этот комментарий был сведен к минимуму модератором на сайте
Спасибо за код. Подскажите, пожалуйста, как сделать автоблокировку ячеек (аналогичных перечисленным Вами) ТОЛЬКО ПОСЛЕ сохранения файла
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте, сэр, я столкнулся с одной проблемой с тем же кодом при использовании этого кода с другим кодом в VBA. Пожалуйста, предложите мне какое-нибудь решение. Спасибо и с уважением, Гурав.
Этот комментарий был сведен к минимуму модератором на сайте
Уважаемый Гурав,
Извините, не могу решить эту проблему.
Этот комментарий был сведен к минимуму модератором на сайте
Я попробовал код и, похоже, немного сработал. Однако это позволяет мне удалить дату, введенную в ячейку, но останавливает меня только тогда, когда я пытаюсь ввести что-то еще. Есть ли способ защитить данные от удаления?
Этот комментарий был сведен к минимуму модератором на сайте
Дорогая Стейси,
Та же проблема не появляется в моем случае. Код не позволяет пользователям вводить, а также удалять данные из указанного диапазона. Не могли бы вы предоставить свою версию Office для дальнейшего тестирования?
Этот комментарий был сведен к минимуму модератором на сайте
Для всех, кто мог наткнуться здесь после этого комментария. Если вам приходится разблокировать рабочий лист КАЖДЫЙ РАЗ, когда вы заполняете ячейку, вам нужно сначала: - Разблокировать электронную таблицу - Выделить область рабочего листа, к которой применяется код - Щелкните правой кнопкой мыши и перейдите к «Форматировать ячейки» - Перейдите к Крайняя правая вкладка под названием «Защита» и СНИМИТЕ ОТМЕТКУ с раздела «Заблокировано» (даже если он отображается сплошной заливкой, а не галочкой). После этого вы сможете вводить данные в несколько ячеек без необходимости каждый раз разблокировать. Имейте в виду, что если вам нужно повторно посетить заблокированные ячейки, чтобы удалить или изменить информацию, вам может потребоваться повторить шаги, описанные выше. Надеюсь это поможет.
Этот комментарий был сведен к минимуму модератором на сайте
мне нравится блокировать только отредактированные ячейки. как только я ввожу какие-либо данные в пустые ячейки, мне нужно заблокировать отредактированную ячейку для автоматической блокировки, но не пустые ячейки.
Этот комментарий был сведен к минимуму модератором на сайте
Дорогой Субхаш,
После использования кода в указанном диапазоне блокируются только редактируемые ячейки. И вы по-прежнему можете вводить данные в пустые ячейки в указанном диапазоне так, как вам нужно. После заполнения пустой ячейки она будет автоматически заблокирована.
Этот комментарий был сведен к минимуму модератором на сайте
Нет, блокирует сразу весь диапазон после ввода данных в ячейку диапазона
Этот комментарий был сведен к минимуму модератором на сайте
Дорогой Прадип,
Какую версию Office вы используете?
Этот комментарий был сведен к минимуму модератором на сайте
Спасибо за кодировку, но у меня проблема разместить 2 кодировки на 1 листе, пожалуйста, помогите.
Этот комментарий был сведен к минимуму модератором на сайте
Дорогая Ярмарка,
Извините, не могу решить эту проблему.
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте,
Сэр, я хочу заблокировать после однократного ввода данных!
Как будто я слежу за одним клиентом и пишу статус, тогда любой другой сотрудник не может его редактировать или изменять!
Этот комментарий был сведен к минимуму модератором на сайте
Добрый день,
Метод в этом посте также может помочь вам решить эту проблему.
Этот комментарий был сведен к минимуму модератором на сайте
ячейки даже не редактируются... что пошло не так, не понимаю, пожалуйста, помогите
Этот комментарий был сведен к минимуму модератором на сайте
Добрый день,
Сначала вам нужно установить для указанных ячеек значение «Разблокировано» для редактирования, а затем защитить рабочий лист. И, наконец, примените сценарий VBA.
Этот комментарий был сведен к минимуму модератором на сайте
это должно кодировать?
Этот комментарий был сведен к минимуму модератором на сайте
Hi


я хочу, чтобы он блокировал диапазон после входа в одну ячейку в диапазоне, пожалуйста, не могли бы вы посоветовать, как мне нужно отредактировать это, чтобы сделать это, спасибо
Этот комментарий был сведен к минимуму модератором на сайте
Hi
редактируя код, есть ли способ заставить его заблокировать все ячейки в диапазоне после того, как данные были введены в одну ячейку в этом диапазоне? поэтому они могут вводить данные только в одну ячейку в диапазоне, а не в нескольких.


Спасибо
Этот комментарий был сведен к минимуму модератором на сайте
Дорогая Джеки,
Приведенный ниже код VBA может помочь вам решить проблему.

Private Sub Worksheet_Change (ByVal Target As Range)
Dim xRg как диапазон
Dim xSRg как диапазон
On Error Resume Next
Установить xSRg = диапазон ("A1: F8")
Установите xRg = пересечение (xSRg, цель)
Если xRg ничего не значит, выйдите из Sub
Target.Worksheet.Unprotect Password:="123"
xSRg.Locked = Истина
Пароль Target.Worksheet.Protect: = "123"
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте,
Есть ли способ заблокировать только ячейки, а не весь лист? Например, если пользователь вводит «Да» в A2, то A2 немедленно заблокируется, чтобы не допустить никаких изменений. Я все еще хотел бы, чтобы другие могли редактировать и любую другую ячейку. Спасибо!
Этот комментарий был сведен к минимуму модератором на сайте
Привет Смит,
Приведенный ниже код VBA может помочь вам решить проблему. Пожалуйста, попробуйте и спасибо за ваш комментарий.

Private Sub Worksheet_Change (ByVal Target As Range)
On Error Resume Next
Target.Worksheet.Unprotect Password:="123"
Цель.Заблокировано = Истина
Пароль Target.Worksheet.Protect: = "123"
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Доброе утро,

Есть ли способ запретить пользователю щелкнуть правой кнопкой мыши «просмотреть код» и увидеть пароль администратора?
Этот комментарий был сведен к минимуму модератором на сайте
Неважно, я понял.
Этот комментарий был сведен к минимуму модератором на сайте
Как? я не понял...
Этот комментарий был сведен к минимуму модератором на сайте
привет нужна помощь


на самом деле я делаю рабочий список для большой группы людей, и этот лист доступен всем, чтобы они могли вводить свои запросы на выходные / ежегодные отпуска и т. д. однако я хочу ограничить количество людей в отпуске для каждого день (максимум 5 в отпуске) и после того, как в течение дня введено 5 запросов на отпуск, никто другой не может больше выполнять запросы на эту конкретную дату.


Есть ли какой-либо код/функция, которая будет вычислять количество конкретных запросов в день, а затем, когда квота будет достигнута, другие ячейки будут заблокированы для запросов, чтобы не превышать их? заранее спасибо
Этот комментарий был сведен к минимуму модератором на сайте
Добрый день,
Добро пожаловать, чтобы разместить любой вопрос на нашем форуме: https://www.extendoffice.com/forum.html.
Вы получите дополнительную поддержку Excel от наших профессионалов или других поклонников Excel.
Этот комментарий был сведен к минимуму модератором на сайте
Привет - этот пост был очень полезным и отлично работает. Однако мои фильтры перестают работать, когда ячейки блокируются. Есть ли способ обойти это? Спасибо!
Этот комментарий был сведен к минимуму модератором на сайте
Привет Ким,
Извините, не могу помочь с этим. По умолчанию функция фильтра отключена на защищенном листе.
Этот комментарий был сведен к минимуму модератором на сайте
Спасибо, чувак, это спасло мою работу :D
Этот комментарий был сведен к минимуму модератором на сайте
когда я выхожу из текущего рабочего файла и снова открываю его, я обнаружил, что новая ячейка не заблокирована после ввода данных, только предыдущая заблокированная ячейка нашла блокировку. любое решение
Этот комментарий был сведен к минимуму модератором на сайте
Привет Назмул,
Вам необходимо сохранить книгу как книгу Excel с поддержкой макросов перед ее закрытием.
Здесь еще нет комментариев
Загрузить ещё
Оставляйте свои комментарии
Публикация как гость
×
Оценить этот пост:
0   Характеристики
Предлагаемые места

Подписывайтесь на Нас

Copyright © 2009 - www.extendoffice.ком. | Все права защищены. Питаться от ExtendOffice, | Карта сайта
Microsoft и логотип Office являются товарными знаками или зарегистрированными товарными знаками Microsoft Corporation в США и / или других странах.
Защищено Sectigo SSL