1

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

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

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

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

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

Образ

1 ответ1

1

Проверка данных только проверяет, соответствуют ли введенные данные правилам или списку или нет. Поскольку ячейка является редактируемой, по этой причине 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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .