Как запретить пользователям вводить пустое значение в лист Excel?
Я хочу ограничить пользователей вводом 0 или 1 на листе Excel 2007.
Я использую диалог Data > Data Validation, чтобы сделать это, но я обнаружил, что он не мешает им вводить пробелы.
Я хотел бы, чтобы при вводе пробелов отображался запрос, аналогичный тому, который появляется при вводе любых других непустых данных, отличных от 0 или 1.
Я планирую заполнить лист нулями до применения проверки, поэтому не должно быть проблем с ошибочными данными.
Кроме того, я открыт для использования VBA для решения этой проблемы.
2 ответа
Эта процедура события изменения будет смотреть на любую ячейку, которая имеет проверку, и отображает сообщение об ошибке проверки. Он не работает как проверка в том смысле, что он не вызывает повторную попытку. Кроме того, он вставляет "1", если его удаляют. Вы могли бы поместить туда старое значение, но для этого потребовалось бы больше работы, и я обычно стараюсь избегать этого.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sForm As String
On Error Resume Next
sForm = Target.Validation.Formula1
On Error GoTo 0
If Len(sForm) > 0 Then 'has validation
If IsEmpty(Target.Value) Then 'cell was deleted
MsgBox Target.Validation.ErrorMessage, vbOKOnly, Target.Validation.ErrorTitle
Application.EnableEvents = False
Target.Value = 1
Application.EnableEvents = True
End If
End If
End Sub
В настройках проверки данных должна быть опция "Игнорировать пусто". Если вы отключите (снимите флажок), эта опция не делает то, что вы хотите?
Установите для DV целое число от 0 до 1 и снимите флажок "Игнорировать пусто"