Excel позволяет удалять содержимое ячейки данных проверенной ячейки

356
Jonny Wright

У меня есть лист, в котором разблокированы только ячейки, которые должны быть отредактированы, и тогда весь лист будет защищен. В одной из ячеек, где разрешено редактирование, установлена ​​проверка данных на основе списка из 2 элементов. Проверка данных настроена так, чтобы разрешить Listи соответствующий диапазон для Source.

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

У меня проблема в том, что Excel позволяет мне удалять содержимое указанной ячейки (что мне не нужно - я хочу, чтобы в списке всегда было одно из двух значений). В окне проверки данных я попытался установить и снять Ignore blankфлажок, который, кажется, не имеет никакого эффекта.

В идеале я хотел бы сделать это без необходимости VBA, но уступит, если это единственный путь.

Вот ссылка на пример рабочей книги - для Option4xвас разрешено выбрать любой из выпадающих вариантов, но не разрешено вводить произвольный текст. Тем не менее, вы также можете удалить содержимое ячейки (что я не хочу).

Image

1
Не могли бы вы загрузить или предоставить ссылку на лист для лучшего понимания? Rajesh S 6 лет назад 0
@RajeshS просто добавил ссылку на пример рабочей книги и добавил скриншот Jonny Wright 6 лет назад 0
Моя первая реакция. Я заметил, что Data Rage C5: L15 не защищен, в столбце C ячейка C9 имеет выпадающий список, работает должным образом, фактическая редактируемая область - D6: L12, остальные рабочие листы защищены. Теперь скажите мне проблему! Rajesh S 6 лет назад 0

1 ответ на вопрос

1
Rajesh S

Проверка данных только проверяет, соответствуют ли введенные данные правилам или списку или нет. Поскольку ячейка является редактируемой, по этой причине Excel позволяет вам удалять введенные данные, но не позволяет вычеркнуть их из списка.

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

Private Sub Worksheet_Change(ByVal Target As Range)  If Target.Address <> "$C$9" Then Exit Sub If Len(Target.Value) = 0 Then Application.EnableEvents = False Application.Undo MsgBox "You can't Delete,,,!" Application.EnableEvents = True End If  End Sub 

NB. Поскольку в Excel нет функций, которые могли бы предотвратить ячейку, в этом случае будет работать только VBA.

Спасибо - предоставленный код не работал так, как я надеялся, но привел меня в правильное русло. Позор, функциональность не встроена, но если это так, как это должно быть сделано, то пусть будет так. Я предложил изменить и пометить как принятый, если / когда редактирование будет одобрено. Jonny Wright 6 лет назад 0
Приятно слышать от вас @JonnyWright. Посредством проверки данных мы можем поставить галочку на НЕ БРОСАТЬ БЛОК КЛЕТОК, но в случае НЕ УДАЛИТЬ, деактивация ключа является единственной опцией. Rajesh S 6 лет назад 0

Похожие вопросы