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

Как предотвратить удаление определенного содержимого ячеек в Excel?

В этой статье говорится о предотвращении удаления определенного содержимого ячеек в Excel. Вы можете добиться этого с помощью методов, описанных в этой статье.

Предотвратить удаление определенного содержимого ячеек, защитив рабочий лист
Предотвратить удаление определенного содержимого ячеек с помощью кода VBA


Предотвратить удаление определенного содержимого ячеек, защитив рабочий лист

По умолчанию все ячейки на листе заблокированы. Если вы хотите предотвратить удаление определенного содержимого ячеек и сделать другие ячейки доступными для редактирования после защиты, сделайте следующее.

1. Нажмите Нажмите кнопку в верхнем левом углу листа, чтобы выбрать весь лист. Затем нажмите Ctrl + 1 , чтобы открыть Формат ячеек диалоговое окно.

2. Во всплывающем Формат ячеек диалоговом окне снимите флажок Заблокированный вариант под Protection и нажмите OK кнопка. Смотрите скриншот:

3. Выберите ячейки, содержимое которых не нужно удалять, нажмите Ctrl + 1 ключ для открытия Формат ячеек диалоговое окно еще раз, проверьте Заблокированный вариант под Protection и нажмите OK кнопку.

4. Теперь щелкните Обзор > Защитить лист, затем укажите и подтвердите свой пароль в обоих Защитить лист и Подтвердите пароль диалоговые окна.

Теперь лист защищен. И указанное содержимое ячейки больше не будет удалено.


Предотвратить удаление определенного содержимого ячеек с помощью кода VBA

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

1. Откройте рабочий лист, содержащий содержимое ячейки, которое вы не хотите удалять, щелкните правой кнопкой мыши вкладку «Лист», а затем щелкните Просмотреть код из контекстного меню.

2. Скопируйте и вставьте приведенный ниже код VBA в окно кода Microsoft Visual Basic для приложений окно.

Код VBA: предотвращение удаления определенного содержимого ячеек в Excel

Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("A1:E7")) Is Nothing Then Exit Sub
    On Error GoTo ExitPoint
    Application.EnableEvents = False
    If Not IsDate(Target(1)) Then
        Application.Undo
        MsgBox " You can't delete cell contents from this range " _
        , vbCritical, "Kutools for Excel"
    End If
ExitPoint:
    Application.EnableEvents = True
End Sub

Внимание: В коде A1: E17 - это диапазон, содержимое ячейки которого вы не хотите удалять. Вы можете изменить диапазон в зависимости от ваших потребностей.

С этого момента, когда вы пытаетесь удалить содержимое ячейки из диапазона A1: E17, вы получите Kutools for Excel диалоговое окно, как показано на скриншоте ниже, нажмите OK кнопку.


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


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

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

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

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

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
офисный дно
Сортировать комментарии по
Комментарии (17)
Номинальный 5 из 5 · рейтинги 1
Этот комментарий был сведен к минимуму модератором на сайте
Как раз то, что я искал, спасибо за помощь!
Этот комментарий был сведен к минимуму модератором на сайте
не волнуйтесь, всегда здесь, чтобы помочь :)
Этот комментарий был сведен к минимуму модератором на сайте
Всем привет,

Я только что попробовал сценарий VBA, и пока он работает очень хорошо в большинстве ситуаций. Однако это не работает, когда вы переходите из редактируемой ячейки в нередактируемый столбец/ячейку. Проблема возникает в том, что он выдает сообщение об ошибке - как было велено - но не сохраняет данные, которые были введены в исходную редактируемую ячейку, из которой была открыта вкладка.

Не могли бы вы внести поправку в сценарий, чтобы он принимал данные в редактируемой ячейке, когда вы переходите в нередактируемую?

ура
Этот комментарий был сведен к минимуму модератором на сайте
Добрый день,
Я пробовал, как вы упомянули в вашем случае, но никаких ошибок не выдает. Не могли бы вы предоставить скриншот вашего дела или сказать мне вашу версию Office?
Спасибо за ваш комментарий.
Этот комментарий был сведен к минимуму модератором на сайте
Если вы не хотите просматривать свой лист или писать код VBA, тогда я использую простую технику, которая предотвращает любое переопределение, за исключением случаев, когда они используют клавишу «DELETE» (возврат не разрешен, но Удалить трудно остановить ). Что я сделал, так это добавил проверку данных со следующими настройками:

1) Разрешить --> Список

2) снимите флажок «Игнорировать пробел» и «Выпадающий список в ячейке»

3) В исходнике введите две двойные кавычки (т.е. "")

4) На вкладке «Предупреждение об ошибке» установите флажок «Показывать изменение ошибки после ввода неверных данных», выберите «Стоп» для стиля, затем введите сообщение об ошибке и описание (например, «Не переопределять»)
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте,
Спасибо, что поделились.
Этот комментарий был сведен к минимуму модератором на сайте
Код VBA - отличный совет, спасибо

Есть ли код VBA для предотвращения изменения и удаления содержимого определенных ячеек в Excel?
Обычный защитный лист у меня не работает, так как я теряю возможность сортировать данные?

Заранее спасибо - Нил
Этот комментарий был сведен к минимуму модератором на сайте
«Предотвратите удаление содержимого определенной ячейки, защитив рабочий лист». Я сделал в соответствии с вашим руководством, но информация о ячейке все равно может быть удалена, т.е. защита не работает. Любое решение.
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Асан,
Вы применяли метод VBA?
Вам нужно добавить VBA в окно кода рабочего листа. Предположим, что содержимое ячейки, которое вы хотите защитить, находится на листе 9, щелкните правой кнопкой мыши вкладку листа и выберите «Просмотреть код» в контекстном меню, а затем скопируйте код непосредственно в окно кода, как показано на изображении ниже.
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте, этот код работает хорошо, однако удаление строки/столбца не поможет. Есть ли обходной путь для этого? Здоровья, Дэвид.
Этот комментарий был сведен к минимуму модератором на сайте
Привет Давид,
Какую версию Excel вы используете? Я пробовал код, целые строки и столбцы в указанном диапазоне не могут быть удалены после применения кода.
Этот комментарий был сведен к минимуму модератором на сайте
Спасибо за ценную информацию.
Что касается приведенного ниже VBA:
Private Sub Worksheet_Change (ByVal Target As Range)
Если Intersect(Target, Range("A1:E7")) ничего не значит, то выйдите из Sub
При ошибке GoTo ExitPoint
Application.EnableEvents = False
Если Не Дата(Цель(1)) Тогда
Приложение.Отменить
MsgBox "Вы не можете удалить содержимое ячейки из этого диапазона" _
, vbCritical, «Kutools для Excel»
End If
Выходная точка:
Application.EnableEvents = True
End Sub

Вышеупомянутое позволит выполнить в пределах определенного указанного диапазона. Это не позволяет добавлять новые строки. Есть ли способ добавить новые строки, сохраняя при этом ту же защиту.
спасибо и приветствую
Этот комментарий был сведен к минимуму модератором на сайте
Привет Усама Абу Фарадж,
Попробовав различные методы, я не могу заставить это работать. После добавления новой строки область будет немедленно заблокирована, и вновь вставленную ячейку нельзя будет редактировать.
Этот комментарий был сведен к минимуму модератором на сайте
Можно ли сделать что-то подобное на уровне книги?

Private Sub Worksheet_Change (ByVal Target As Range)
Если Intersect(Target, Range("A1:M7000")) ничего не значит, тогда выйдите из Sub
При ошибке GoTo ExitPoint
Application.EnableEvents = False
Если Не Дата(Цель(1)) Тогда
Приложение.Отменить
MsgBox "Вы не можете удалить содержимое ячейки из этого диапазона" _
, vbCritical, «Kutools для Excel»
End If
Выходная точка:
Application.EnableEvents = True
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Привет Гелу,
Вы хотите предотвратить удаление диапазона «A1: M7000» на всех листах текущей книги?
Этот комментарий был сведен к минимуму модератором на сайте
Нет, я имел в виду НЕ разрешать удаление (без защиты wks или wkb).

Приятно, что все вышеперечисленное работает на уровне Wks.

Если есть что заставить работать на уровне wkb было бы еще лучше (у меня много листов)

G
Этот комментарий был сведен к минимуму модератором на сайте
Отлично. Мне было интересно, был ли это вариант, и, конечно же, это было. Спасибо за очень простую инструкцию.

Эндрю С.
Номинальный 5 из 5
Здесь еще нет комментариев
Оставляйте свои комментарии
Публикация как гость
×
Оценить этот пост:
0   Характеристики
Предлагаемые места

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

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