VBAdynamic命名范围为列表框RowSource错误

我有一个dynamic命名的范围,返回一个列表(数组)的列表(数组),但没有分配,但一旦所有的值分配列表返回#N / A

公式(数组):

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

问题是,我正在使用这个名为Listbox.RowSource的Ranged,我找不到一个方法来检查命名范围的值,甚至检查它是否返回错误。

我用了:

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

但它总是返回假

我也用过:

IsEmpty(ActiveWorkbook.Names("UnassignedEquipment"))

IsError(ActiveWorkbook.Names("UnassignedEquipment"))

一种方法是在用于命名范围的公式中使用IFERROR,以便如果命名范围不返回任何内容,则它指向特定范围/单元格。

 =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。