【问题标题】:VBA Dynamic Named Range as Listbox RowSource ErrorVBA 动态命名范围作为列表框行源错误
【发布时间】:2017-11-05 12:01:58
【问题描述】:

我有一个动态命名范围,它返回一些未分配的值的列表(数组),但是一旦分配了所有值,列表就会返回 #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)

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

我用过:

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

但它总是返回 False

我也用过:

IsEmpty(ActiveWorkbook.Names("UnassignedEquipment"))

IsError(ActiveWorkbook.Names("UnassignedEquipment"))

【问题讨论】:

  • 我有一个有 2 个列表框的表单,“未分配的设备”被添加到其中一个列表框中,重要的是要让用户知道还有没有分配的设备,以获取信息分配和未分配给表“阀门表”。

标签: excel vba dynamic listbox named-ranges


【解决方案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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多