2010-05-18 114 views
1

我被告知,Excel對象模型允許Range不是任何工作表的一部分,但包含一組單元並在工作簿中用名稱表示。Microsoft Excel:以編程方式創建隱藏的命名範圍

誰能向我解釋如何將這些融入Excel對象模型,以及如何人會去(在VBA或.NET源代碼)編程創建這樣的事情。

謝謝。

+0

如果我理解你的問題,我從來沒有聽說過這樣的事情,但它肯定會有用! – Icode4food 2010-05-18 15:41:44

回答

2

你的問題有點含糊,但我會給它一個鏡頭。

好,戴維介紹,你可以給細胞在薄片上「區域名稱」,然後您可以參考編程特定的範圍,但聽起來並不像你所要求的。

這聽起來像你問「有沒有可用細胞的一種抽象的範圍由VBA代碼中使用不字面上任何工作表存在嗎?」對此的答案是否定的,即使命名範圍只是方便地引用實際工作表上的一組真實單元格。

但是,您可以通過編程方式隱藏工作表,以便用戶看不到它,並且仍然可以在該工作表上使用單元格和範圍。只要做:

Sheets("Sheet1").Visible = xlSheetHidden 
Sheets("Sheet2").Visible = xlSheetVeryHidden 
Sheets("Sheet3").Visible = xlSheetVisible 

什麼是「非常隱藏」,你問? 這意味着用戶不能轉到格式,工作表,取消隱藏並使工作表可見。

所以,如果我理解正確,你想要什麼,只是編程隱藏層片之一,然後使用Dave的技術來創建一個名爲參考這個隱藏(或VeryHidden)片範圍。

1

這將是一個命名的範圍。您可以引用選定的單元格,只需在公式欄旁邊顯示'A1'的名稱即可。這會創建一個不會更改的命名範圍。

或者,您可以創建基於公式的命名範圍,因此可能會隨着電子表格中的數據更改而發生更改。您可以從「定義名稱」選項(位於Office 2010中的公式功能區)中執行此操作。

命名範圍可以從.net從VBA和(我敢肯定)訪問。

所以,你會從VBA訪問指定的範圍內,像這樣:

Range["MyNamedRange"] 
1

是的,有在VSTO的Microsoft.Office.Tools.Excel命名空間的NamedRange控制。這是一個host control,它與Microsoft.Office.Interop.Excel.Range命名空間中的本機Range控件不同。