VBA动态命名范围为Listbox RowSource错误

时间:2017-06-04 17:03:08

标签: excel vba dynamic listbox named-ranges

我有一个动态命名范围,它返回一些未分配的值的列表(数组),但是一旦分配了所有值,列表返回#N / A

公式(数组):

  

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

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

我用过:

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

但它总是返回False

我也用过:

IsEmpty(ActiveWorkbook.Names("UnassignedEquipment"))

IsError(ActiveWorkbook.Names("UnassignedEquipment"))

1 个答案:

答案 0 :(得分:1)

一种方法是在用于命名范围的公式中使用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。