Я не думаю, что есть единый ответ на все случаи жизни.
Если список очень короткий и фиксированный, используйте серию тестов с Or:
If personName = "John" Or personName = "George" Or personName = "Harry" Then
A midсписок может быть представлен в виде строки, как уже предлагалось, с небольшой оптимизацией:
If InStr("$John$George$Harry$", "$" & personName & "$") Then
Вы также можете использовать массив в качестве списка вместе с Filter ():
If UBound(Filter(Array("$John$", "$George$", "$Harry$"), _
"$" & personName & "$")) >= 0 Then
Эти параметры, вероятно, будут работать лучше, если у вас есть предварительно скомпонованные String или Array, а не встраивание их в выражение.
Для более длинного списка вы можете использовать объект Scripting.Dictionary для хранения тестовых случаев.Это включает хеш с разрешением коллизий и метод Exists ().VB6 Collection тоже работает, хотя для реализации функциональности, подобной Exists, нужно использовать исключение.
Еще лучше, если у вас есть несколько «полей» для проверки (имя и цвет глаз?), Вы можете использовать изготовленный набор записей ADOи его свойство Filter.Это позволяет легко определить, когда у вас Джордж с голубыми глазами или Гарри с карими глазами.Для более длинного списка кандидатов вы можете установить динамическое свойство «Оптимизировать» на «Истина» в полях набора записей, которые вы хотите хэшировать для повышения производительности.