在隐藏单元格时,我使用Excel Interop从C#访问Excel中的命名单元格时遇到问题,我这样访问它:
bool SomeBoolean = WorkSheet.Range["MyRangeName"].Value;
当我访问它时,Range属性隐式调用get_range
,这是根据堆栈跟踪抛出异常的原因。用于直接调用get_range
的代码,结果类似。
如果我取消隐藏细胞,它可以正常工作。如果我逐行遍历代码,它可以正常工作(这总是令人沮丧的情况)。
当然,我可以通过取消隐藏细胞来解决这个问题,但我想尝试找到更优雅的解决方案。我已经仔细阅读了MSDN文档以及SO上的几个主题,但我似乎找不到任何东西。任何帮助将不胜感激!
Worksheet.Range的MSDN页面:https://msdn.microsoft.com/en-us/library/office/ff836512.aspx
答案 0 :(得分:1)
这是设计的。根据定义,无法访问隐藏的单元格。
亲自尝试一下。在Excel中创建工作表,隐藏一些列,然后搜索(按值,而不是公式)查看隐藏单元格中的值。您将看到一个对话框,指示无法找到该值。
如果您不同意此行为,请与Microsoft联系。
答案 1 :(得分:0)
感谢大家帮我解开这个谜团。在我的调试过程中,我注意到它有时会工作,神秘,有时则不然,而且我查看了导致相关行的代码。
此问题的原因是正在从工作表中搜索范围,该工作表在调用插件时设置为当前选定的工作表。因此,如果在调用时未选择工作簿中的正确选项卡,则会失败。如果选中,则成功。事实证明它与被隐藏的细胞无关。相当令人沮丧,但至少现在我们知道了!