簡體   English   中英

使用C#中的Excel.Interop檢查范圍是否具有名稱

[英]Check if a Range has a Name using Excel.Interop in C#

我目前正在使用C#和Excel Interop開發Excel插件應用程序。 我正在遍歷一系列單元格。 我正在嘗試檢查一個單元是否命名。

但是,當我嘗試添加if條件時,如果未命名范圍,則會引發異常。 例外是

System.Runtime.InteropServices.COMException(0x800A03EC):來自HRESULT的異常:0x800A03EC

這有點奇怪。

if(r.Name == null)
{
    item.name="Not named";
} else 
{
    item.name = r.Name.Name;
}

如果條件本身拋出異常,為什么Range對象未命名時不返回null?

有沒有一種方法可以檢查范圍是否具有名稱。 我似乎沒有找到其他解決方案。

在這方面的任何幫助表示贊賞。

謝謝

如果條件本身拋出異常,為什么Range對象未命名時不返回null?

這就是Excel對象模型的工作方式,如果您嘗試從VBA代碼訪問Range.Name,則會得到相同的結果。

您可以選擇:

  • 捕獲異常,例如

     public string GetRangeName(range As Range) { try { var name = range.Name; if (name == null) return null; // Won't happen in the current version of Excel, but who knows for a future version return name.Name; } catch(COMException) { return null; } } 
  • 或者,遍歷工作表及其工作簿的Names集合,以查找引用您感興趣的單元格的一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM