c# - 如何查找单元格的命名范围 - VSTO 抛出异常

标签 c# excel vsto

要获取单元格的命名范围,这是我的代码。如果单击的单元格在第一张纸上,则工作正常。但是当我从其他工作表中选择一个单元格时,它只会抛出 Exception from HRESULT: 0x800A03EC Error

在堆栈上看到了类似的问题,但只能从这些帖子中得出结论: 这是我的代码:

            Microsoft.Office.Interop.Excel.Workbook _workbook = ThisAddIn.Application.ActiveWorkbook;

            Microsoft.Office.Interop.Excel.Range Target = (Microsoft.Office.Interop.Excel.Range)Globals.ThisAddIn.Application.ActiveCell;
            foreach (Microsoft.Office.Interop.Excel.Name name in _workbook.Names)
            {
                Microsoft.Office.Interop.Excel.Range intersectRange = _workbook.Application.Intersect(Target, name.RefersToRange);
                if (intersectRange != null)
                {
                    rangeName = name.Name;
                    break;
                }
            }

最佳答案

如果范围位于不同的工作表上,则不能在不引发错误的情况下使用 Intersect。在尝试 Intersect()

之前,添加检查以查看每个范围的 Parent 属性是否引用同一张工作表

关于c# - 如何查找单元格的命名范围 - VSTO 抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9753111/

相关文章:

c# - Outlook 2010 VSTO - 窗体区域中的标准 Office 图标

excel - Excel 单元格内公式中 + 前缀的用途是什么?

visual-studio - 设置 Inno 以运行 Office 加载项安装程序并等待它

c# - VSTO(Outlook 加载项)设置部署 (C#)

c# - 设置日期和月份格式,但不是他们的顺序

excel - 运行时错误 '-2147217871 (80040e31)' : Query timeout expired

r - 根据具有指定格式(例如,删除线)的单元格消除 R 中的 Excel 行?

C# 复制 BindingList 的最佳方法是什么?

c# - IQueryable 到底是什么意思?

c# - 如何使用 HttpWebRequest 为 SSL 请求设置主机 header 值