2010-05-18 113 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控件不同。