要获得单元格的命名范围,请参阅我的代码。如果单击的单元格位于第一张纸上,则工作正常。但是当我从其他工作表中选择一个单元格时,它只会抛出HRESULT的异常:0x800A03EC错误
在堆栈上看到类似的问题但dint从这些帖子中得出结论: 这是我的代码:
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;
}
}
答案 0 :(得分:4)
如果范围在不同的工作表上,则不能在不抛出错误的情况下使用Intersect。在尝试Parent
Intersect()
属性是否引用同一工作表
答案 1 :(得分:0)
我认为Globals.ThisAddIn.Excel
是一个Application
对象。它可能与Globals.ThisAddIn.Application
不同。根据{{3}},使用两个Application
之间的对象可以触发您的异常。
尝试更改代码以使用一个或另一个Application
实例,而不是两者。
答案 2 :(得分:0)
尝试更简单的方法获取名称
如果不是(ActiveCell.ListObject什么都不是)那么 MsgBox ActiveCell.ListObject.Name 结束如果