Проверка данных для получения сообщения об ошибке (вход в ячейку не совпадает с именем в списке)

Я посмотрел на несколько примеров для моего вопроса, но не смог найти ответ, который работает.

Справочная информация: у меня есть список элементов (скажем, яблоко, апельсин, банан) в Sheet1 (A2: A77, который уже является определенным диапазоном с именем «Liste»). Затем я имею на другом листе (скажем, Sheet2) несколько ячеек, где появляется пользовательская форма (созданная с помощью кода VBA), где пользователь может выбрать элемент и нажать «ОК».

Однако из-за характера пользовательской формы (и списка) у вас могут быть орфографические ошибки и т. Д., И они все равно будут приняты. Поэтому я хотел бы создать проверку, где он соответствует входным данным для данного списка (чтобы пользователи не могли добавлять что-либо еще). Форма пользователя / код специально предназначена для обеспечения возможности поиска (вместо простого списка проверки данных).

Проблема: я попытался создать это с помощью кода vba, который проверяет ввод, сопоставляет его со списком Sheet1 и, если совпадений нет, показывает сообщение msgbox с оператором. Это частично сработало (для некоторых писем, но не для других, очень странно).

Вот код, который у меня был:

Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Dim rSearchRng As Range
Dim vFindvar As Variant

If Not Intersect([B7:B26], Target) Is Nothing Then
    Set rSearchRng = Sheet4.Range("Liste")
    Set vFindvar = rSearchRng.Find(Target.Value)
    If Not vFindvar Is Nothing Then
        MsgBox "The Audit Project Name you have entered is not valid. Please try again!", vbExclamation, "Error!"
        Selection.ClearContents
    End If
End If
Application.EnableEvents = True
End Sub

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

Проверка данных

  • Я попробовал опцию «list» (и поместил ее равной названному диапазону), но это ничего не сделало (окно ошибки не отображалось)
  • Я пробовал «Пользовательский» со следующей формулой «SUMPRODUCT (- (B12 = Liste)> 0) = TRUE (я нашел это в сообщении, которое работало для других, когда я попробовал его в ячейке, это дало мне ожидаемое» TRUE / ЛОЖЬ "результаты), но все равно ничего не появляется

Вопрос Можно ли получить это сообщение об ошибке с проверкой данных?

Спасибо V

Всего 2 ответа


  • Выберите ваши ячейки, в которые вы хотите поместить данные проверки
  • Выбрав ячейки, перейдите на вкладку «Данные» -> «Проверка».
  • Установите «Разрешить» в «Список» и установите Source =Liste как показано здесь:

Скриншот списка проверки данных

  • Затем перейдите на вкладку «Предупреждение об ошибке» и установите «Стиль» на «Предупреждение» и введите нужный текст в «Заголовок» и «Сообщение об ошибке», как показано здесь:

Скриншот предупреждения об ошибке проверки данных

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

В качестве примечания: если вы хотите, чтобы проверка данных полностью запрещала / запрещала любую запись, отсутствующую в списке, вам необходимо установить для параметра «Предупреждение об ошибке -> стиль» значение «Стоп» вместо «Предупреждение».


Попробуйте следующую формулу:

= NOT (ISERROR (FIND ( "-" & A1 & "-" (TEXTJOIN ( "-", TRUE, Лист1 A1: A77))))!)

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


Есть идеи?

10000