@ti_zh_vrach
Бывший аптекарь.

Как в VBA сделать проверку на наличие значения в списке?

Добрый день.
Пытаюсь реализовать проверку:
For row_values = 2 To row_values_end
    Call do_any_here
    If something Then
        For row_db = 2 To row_db_end
            On Error GoTo error_handler
            If data_base.Cells(row_db, 6).Value <> special_values Then Err.Raise 1013, "another_sub", "неверные данные"
            Call do_any_there
            On Error GoTo 0
        Next row_db 
    End If
Next row_values

В special_values должны содержаться два значения String. Нужно, что бы ошибка не возникала если data_base.Cells(row_db, 6) равно хотя бы одному из двух значений в special_values. Вариантов data_base.Cells(row_db, 6) много. Нужна реализация, которая не требует большого количества шагов (в идеале - один). Дело в том, что эта проверка нужна для макроса, который может так проверять и не несколько сотен тысяч ячеек. Производительность макроса в целом - отдельный вопрос.
  • Вопрос задан
  • 42 просмотра
Пригласить эксперта
Ответы на вопрос 1
@ti_zh_vrach Автор вопроса
Бывший аптекарь.
Нашёл обходное решение.
If data_base.Cells(row_db, 6).Value <> "энач1" Then If data_base.Cells(row_db, 6).Value <> "энач2" Then Err.Raise 1013, "another_sub", "неверные данные"

Есть ещё вариант с Collections, который до конца не проработал. Но кажется, он тоже сведётся к двойному If. Или к перебору в цикле.
Вопрос в заголовке открыт.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы