0

我正在使用 VSTO(由于客户端请求在 Visual Studio 2008 上)在单个单元格上创建命名范围,然后将其保存到工作簿并随后在应用程序重新启动时读取。

如果我在 excel 中删除包含一个或多个命名范围的行,保存我的工作簿并重新启动 excel,仍然返回所述行中的命名范围,这导致了我的问题。

为了命名单元格,我做了一个简单的 Application.Selection.Name = "whatever"。为了让它们在启动时恢复,我正在使用 Application.ActiveWorkbook.Names。

有人可以告诉我这是否是正确的行为,如果是这样,是否有任何方法可以过滤范围 - 通过 C# excel 互操作代码 - 仅限于当前可见的范围。

提前致谢。

4

1 回答 1

2

是的,这是正确的行为,与 VSTO 无关。

删除具有名称的范围时,不会删除该名称。相反,它被一个无效的引用替换:

Sheet1!#REF!  

RefersToRange检测此类名称的最简单方法是在读取属性时捕获异常。

于 2012-05-25T16:56:19.203 回答