
[英]POI Name '_xlfn.IFNA' is completely unknown in the current workbook
[英]=INDEX(PeriodList,MonthNo) creating _xlfn.SINGLE name in workbook
我希望有人能够帮助解决最近 Excel 更新中出现的问题。
如果我在 Excel 工作表中定义两个范围名称,然后通过 UI 在单元格 A13 中输入 =Index(PeriodList,MonthNo),我发现 VBA 中的 Thisworkbook.Names.Count 报告 2 - 正如预期的那样。 但是,如果我在 VBA 中执行 Activesheet.Range("A13").Formula = "=Index(PeriodList,MonthNo)",Thisworkbook.Names.Count 报告 3,我发现创建了一个无法删除的新名称。 名称是 _xlfn.SINGLE。 此名称的存在对于大量广泛分布的 Excel 模板来说是一个问题,这些模板在尝试删除此名称时会失败。 这只是在最近的 Excel 更新后才成为一个问题。
问题似乎与 MonthNo 元素有关,因为“=Index(PeriodList,1)”不会生成 _xlfn.SINGLE 名称。
谁能确定如何在不创建不受欢迎的 _xlfn.SINGLE 名称的情况下在 VBA 中输入与“=Index(PeriodList,MonthNo)”等效的内容?
如果该功能过去对你有用,但最近才成为问题,你应该与你的 IT 部门联系,因为它指出了正在使用的 Excel 版本的问题。
当正在运行的 Excel 版本不支持动态数组函数时,将显示 _xlfn.SINGLE。
有许多可用的动态数组 VBA 解决方案,例如此处。 https://bettersolutions.com/vba/arrays/dynamic-size.htm
使用此代码在 UI 名称管理器中显示所有定义的名称。 然后您可以删除您选择的命名范围,包括之前隐藏的范围。
Sub ShowAllDefinedNames()
'Source: https://professor-excel.com/named-ranges-excel-hidden-names/
Dim tempName As Variant
'Unhide all names in the currently open Excel file
For Each tempName In ActiveWorkbook.Names
tempName.Visible = True
Next
End Sub
经过进一步调查后,我在https://support.office.com/en-gb/article/index-function-a5dcf0dd-996d-40a4-a822-b56b061328bd上发现了说明,这表明公式现在需要输入数组使用 CTRL+SHIFT+ENTER。 现在不再创建 _xlfn.SINGLE 名称。 问题解决了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.