Щоб отримати іменований діапазон клітинки, ви побачите мій код. Працює нормально, якщо кліка, що натиснута, знаходиться на першому аркуші. Але в той момент, коли я вибираю клітинку з іншого аркуша, він просто кидає Виключення з HRESULT: 0x800A03EC Помилка
Побачила подібне запитання на стеку, але отримала висновок з цих повідомлень: Ось мій код:
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;
}
}
Відповіді:
4 для відповіді № 1Не можна використовувати Intersect, не викидаючи помилку, якщо діапазони знаходяться на різних аркушах. Parent
властивість посилаються на той самий лист, перш ніж спробувати Intersect()
0 для відповіді № 2
Мені це подобається Globals.ThisAddIn.Excel
є Application
об'єкт. Це може бути інший примірник, ніж Globals.ThisAddIn.Application
. Згідно з http://www.ureader.com/message/692318.aspx з використанням об'єктів між двома Application
s можуть викликати ваше виключення.
Спробуйте змінити код, щоб використовувати той чи інший Application
наприклад, не обидва.
0 для відповіді № 3
спробуйте отримати простіший спосіб, щоб отримати назву
Якщо ні (ActiveCell.ListObject - ніщо) Потім MsgBox ActiveCell.ListObject.Name End If