Динамический именованный диапазон VBA как ошибка RowSource списка

У меня есть динамический именованный диапазон, который возвращает список (массив) некоторых значений, которые не назначены, но как только все значения назначены, список возвращает #N/A

Формула (массив):

=ИНДЕКС(Таблица оснащения[Оборудование], ПОИСКПОЗ(0,Таблица оснащения[Флаг],0), 1):ИНДЕКС(Таблица оснащения[Флаг],ПОИСКПОЗ(0,Таблица оснащения[Флаг],0)+СЧЁТЕСЛИ(Таблица оснащения[Флаг],0) )-1, 1)

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

Я использовал:

Application.WorksheetFunction.IsError(ActiveWorkbook.Names("UnassignedEquipment"))

Но он всегда возвращает False

Я также использовал:

IsEmpty(ActiveWorkbook.Names("UnassignedEquipment"))

и

IsError(ActiveWorkbook.Names("UnassignedEquipment"))


person Tima    schedule 04.06.2017    source источник
comment
У меня есть форма с 2 списками, неназначенное оборудование добавлено в один из этих списков, важно, чтобы пользователь знал, что есть оборудование, которое еще не назначено, для информации, назначенной и неназначенной для таблицы Valves Table.   -  person Tima    schedule 04.06.2017


Ответы (1)


Один из способов — использовать ЕСЛИОШИБКА в формуле, используемой для именованного диапазона, чтобы, если именованный диапазон ничего не возвращал, он ссылался на определенный диапазон/ячейку.

=IFERROR(INDEX(EquipTable[Equip], MATCH(0,EquipTable[Flag],0), 1):INDEX(EquipTable[Equip], MATCH(0,EquipTable[Flag],0)+COUNTIF(EquipTable[Flag],0)-1, 1),A1)

Здесь A1 — это ячейка, на которую будет ссылаться именованный диапазон, если формула не возвращает ничего допустимого диапазона. Измените A1 в формуле в соответствии с вашими требованиями.

person Subodh Tiwari sktneer    schedule 05.06.2017