Serge Пользователь Сообщений: 11308 |
Как заблокировать ячейку по условию? Спасибо. |
Чувствую, вопрос непростой, раз такой профессионал, как Serge 007 его задаёт. |
|
Serge Пользователь Сообщений: 11308 |
Vlad, спасибо. |
Да, с VBA я никак не могу подружиться. |
|
для А1 и А2… Удивление есть начало познания © Surprise me! |
|
Serge Пользователь Сообщений: 11308 |
Спасибо, Ёксель, спасибо Дима. |
Serge Пользователь Сообщений: 11308 |
Вариант Ёкселя очищает нужные ячейки, если не выполнено условие, вариант Димы просто не даёт ввести данные если условие не выполнено. Замечу что вопрос уже решен, это просто спортивный интерес. |
Paulster Пользователь Сообщений: 1 |
{quote}{login=Vlad}{date=04.08.2010 05:51}{thema=}{post}Чувствую, вопрос непростой, раз такой профессионал, как Serge 007 его задаёт. Ув, Влад, подскажи пожалуйста как ты сделал такой трюк ! )) заранее благодарен! ) |
Да это и не трюк вовсе. |
|
Описка… в последней строке читать А1 и В1 вместо А2 и В2 |
|
гость Гость |
#11 30.08.2010 09:28:07 {quote}{login=Serge 007}{date=04.08.2010 07:25}{thema=}{post}Вариант Ёкселя очищает нужные ячейки, если не выполнено условие, вариант Димы просто не даёт ввести данные если условие не выполнено. Замечу что вопрос уже решен, это просто спортивный интерес.{/post}{/quote} Данный вариант с макросом — не всегда сработает… (визуально ☺) Прикрепленные файлы
|
Блокировка ячейки по условию |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Перейти к содержимому
Вопрос от подписчика: poltorak
Всем доброго дня!
Что я уже сделал: Есть две разные ячейки. В 1-й ставиться постоянная дата. А 2-я загорается красным, при наступлении 30-го дня от постоянной даты.
И если ввести в эту 2-ю ячейку слово «продлено».То ячейка становиться белого цвета с текстом продлено.
Сделал формулу: =И(СЕГОДНЯ()-$A$2>=30;$F2<>»продлено»).
Потом я добавил 2-ю формулу : =ЕПУСТО($A$2). Для того чтобы когда 1-я ячейка пустая, то 2-я не загорается красным.
Нужно : чтобы во 2-ю ячейку нельзя было ввести «продлено» раньше 30 дней(т.е. блокировало ввод).Но когда наступал срок, начинало работать моё 1-е правило.
Например: я ввожу слово «продлено» раньше 30 дней(срабатывает блокировка), когда подходит срок ячейка вторая загорается красным и я чтобы ячейка не горела пишу слово «продлено» и ячейка становится белой со словом продлено.
Ну очень нужна Ваша помощь!
Ответ на вопрос:
Вам поможет небольшой макрос, который будет запускаться при изменении выделения на листе в диапазоне B:B и проверять значение в ячейке справа.
Макрос защиты нужных ячеек приведен ниже:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) ‘макрос запускается при изменении выделенного диапазона(при клике на новую ячейку)
Dim a As String
ActiveSheet.Unprotect ‘снимаем защиту с листа
a = «Взято с RuExcel.ru»
On Error Resume Next ‘обработка ошибок, на всякий случай
If Not Intersect(Target, Range(«B:B»)) Is Nothing Then ‘прверяем, чтобы срабатывапло только при клике на диапазон B:B
If Cells(ActiveCell.Row, (ActiveCell.Column — 1)).Value < DateAdd(«d», -30, Now) Then ‘если дата соответствует снимает защиту с активной ячейки
Range(ActiveCell, ActiveCell).Locked = False
Else
Range(ActiveCell, ActiveCell).Locked = True
End If
Else: Exit Sub ‘если кликнуть мимо диапазона В:В — выход из макроса
End If
ActiveSheet.Protect ‘защищаем лист
MsgBox (a) ‘выводим сообщение
End Sub
В некоторых случаях вам может потребоваться заблокировать или разблокировать ячейки на основе значений в другой ячейке. Например, вам нужно, чтобы диапазон B1: B4 был разблокирован, если ячейка A1 содержит значение «Accepting»; и блокироваться, если ячейка A1 содержит значение «Отказано». Как вы можете этого добиться? Эта статья может вам помочь.
Блокировать или разблокировать ячейки на основе значений в другой ячейке с кодом VBA
Блокировать или разблокировать ячейки на основе значений в другой ячейке с кодом VBA
Следующий код VBA может помочь вам заблокировать или разблокировать ячейки на основе значения в другой ячейке в Excel.
1. Щелкните правой кнопкой мыши вкладку листа (лист с ячейками, которые необходимо заблокировать или разблокировать на основе значений в другой ячейке) и нажмите Просмотреть код из контекстного меню.
2. Затем скопируйте и вставьте следующий код VBA в окно кода.
Код VBA: блокировать или разблокировать ячейки на основе значений в другой ячейке
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("A1") = "Accepting" Then
Range("B1:B4").Locked = False
ElseIf Range("A1") = "Refusing" Then
Range("B1:B4").Locked = True
End If
End Sub
3. нажмите другой + Q клавиши одновременно, чтобы закрыть Microsoft Visual Basic для приложений окно.
С этого момента, когда вы вводите значение «Принимаю» в ячейку A1, диапазон B1: B4 разблокируется.
При вводе значения «Отказано» в ячейку A1 указанный диапазон B1: B4 автоматически блокируется.
Статьи по теме:
- Как заблокировать сразу все ссылки на ячейки в формулах в Excel?
- Как заблокировать или защитить ячейки после ввода данных или ввода в Excel?
- Как заблокировать изображение / изображение в ячейке или внутри нее в Excel?
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Комментарии (52)
Оценок пока нет. Оцените первым!
Содержание
- Включение блокирования ячеек
- Способ 1: включение блокировки через вкладку «Файл»
- Способ 2: включение блокировки через вкладку «Рецензирование»
- Разблокировка диапазона
- Вопросы и ответы
При работе с таблицами Excel иногда возникает потребность запретить редактирование ячейки. Особенно это актуально для диапазонов, где содержатся формулы, или на которые ссылаются другие ячейки. Ведь внесенные в них некорректные изменения могут разрушить всю структуру расчетов. Производить защиту данных в особенно ценных таблицах на компьютере, к которому имеет доступ и другие лица кроме вас, просто необходимо. Необдуманные действия постороннего пользователя могут разрушить все плоды вашей работы, если некоторые данные не будут хорошо защищены. Давайте взглянем, как именно это можно сделать.
Включение блокирования ячеек
В Экселе не существует специального инструмента, предназначенного для блокировки отдельных ячеек, но данную процедуру можно осуществить с помощью защиты всего листа.
Способ 1: включение блокировки через вкладку «Файл»
Для того, чтобы защитить ячейку или диапазон нужно произвести действия, которые описаны ниже.
- Выделите весь лист, кликнув по прямоугольнику, который находится на пересечении панелей координат Excel. Кликните правой кнопкой мыши. В появившемся контекстном меню перейдите по пункту «Формат ячеек…».
- Откроется окно изменения формата ячеек. Перейдите во вкладку «Защита». Снимите галочку около параметра «Защищаемая ячейка». Нажмите на кнопку «OK».
- Выделите диапазон, который желаете заблокировать. Опять перейдите в окно «Формат ячеек…».
- Во вкладке «Защита» поставьте галочку у пункта «Защищаемая ячейка». Кликните по кнопке «OK».
Но, дело в том, что после этого диапазон ещё не стал защищенным. Он станет таковым только тогда, когда мы включим защиту листа. Но при этом, изменять нельзя будет только те ячейки, где мы установили галочки в соответствующем пункте, а те, в которых галочки были сняты, останутся редактируемыми.
- Переходим во вкладку «Файл».
- В разделе «Сведения» кликаем по кнопке «Защитить книгу». В появившемся списке выбираем пункт «Защитить текущий лист».
- Открываются настройки защиты листа. Обязательно должна стоять галочка около параметра «Защитить лист и содержимое защищаемых ячеек». При желании можно установить блокирование определенных действий, изменяя настройки в параметрах, находящихся ниже. Но, в большинстве случаев, настройки выставленные по умолчанию, удовлетворяют потребностям пользователей по блокировке диапазонов. В поле «Пароль для отключения защиты листа» нужно ввести любое ключевое слово, которое будет использоваться для доступа к возможностям редактирования. После того, как настройки выполнены, жмем на кнопку «OK».
- Открывается ещё одно окно, в котором следует повторить пароль. Это сделано для того, чтобы, если пользователь в первый раз ввел ошибочный пароль, тем самым навсегда не заблокировал бы сам себе доступ к редактированию. После ввода ключа нужно нажать кнопку «OK». Если пароли совпадут, то блокировка будет завершена. Если они не совпадут, то придется производить повторный ввод.
Теперь те диапазоны, которые мы ранее выделили и в настройках форматирования установили их защиту, будут недоступны для редактирования. В остальных областях можно производить любые действия и сохранять результаты.
Способ 2: включение блокировки через вкладку «Рецензирование»
Существует ещё один способ заблокировать диапазон от нежелательного изменения. Впрочем, этот вариант отличается от предыдущего способа только тем, что выполняется через другую вкладку.
- Снимаем и устанавливаем флажки около параметра «Защищаемая ячейка» в окне формата соответствующих диапазонов точно так же, как мы это делали в предыдущем способе.
- Переходим во вкладку «Рецензирование». Кликаем по кнопке «Защитить лист». Эта кнопка расположена в блоке инструментов «Изменения».
- После этого открывается точно такое же окно настроек защиты листа, как и в первом варианте. Все дальнейшие действия полностью аналогичные.
Урок: Как поставить пароль на файл Excel
Разблокировка диапазона
При нажатии на любую область заблокированного диапазона или при попытке изменить её содержимое будет появляться сообщение, в котором говорится о том, что ячейка защищена от изменений. Если вы знаете пароль и осознано хотите отредактировать данные, то для снятия блокировки вам нужно будет проделать некоторые действия.
- Переходим во вкладку «Рецензирование».
- На ленте в группе инструментов «Изменения» кликаем по кнопке «Снять защиту с листа».
- Появляется окошко, в которое следует ввести ранее установленный пароль. После ввода нужно кликнуть по кнопке «OK».
После этих действий защита со всех ячеек будет снята.
Как видим, несмотря на то, что в программе Эксель не имеется интуитивно понятного инструмента для защиты конкретной ячейки, а не всего листа или книги, данную процедуру можно выполнить путем некоторых дополнительных манипуляций через изменение форматирования.
Еще статьи по данной теме: