1

Я хочу ограничить пользователей вводом 0 или 1 на листе Excel 2007.

Я использую диалог Data> Data Validation, чтобы сделать это, но я обнаружил, что он не мешает им вводить пробелы.

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

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

Кроме того, я открыт для использования VBA, чтобы исправить эту проблему.

2 ответа2

1

Эта процедура события изменения будет проверять любую ячейку, которая имеет проверку, и отображать сообщение об ошибке проверки. Он не работает как проверка в том смысле, что он не вызывает повторную попытку. Кроме того, он вставляет "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
0

В настройках проверки данных должна быть опция "Игнорировать пусто". Если вы отключите (снимите флажок), эта опция не делает то, что вы хотите?

Установите для DV целое число от 0 до 1 и снимите флажок "Игнорировать пусто"

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