Microsoft Excel:以编程方式创建隐藏的命名范围

时间:2010-05-18 15:37:00

标签: excel vsto excel-formula

我被告知Excel对象模型允许Range不是任何工作表的一部分,但包含一组单元格,并在工作簿中用名称表示。

任何人都可以向我解释这些是如何适应Excel对象模型的,以及如何以编程方式创建这样的东西(无论是在VBA还是.NET源代码中)。

感谢。

3 个答案:

答案 0 :(得分:2)

你的问题有点模糊,但我会试一试。

好吧,正如Dave所描述的那样,你可以在工作表上给出一个特定范围的单元格“范围名称”,然后可以以编程方式引用它,但这听起来不像你所要求的那样。

听起来你在问“VBA代码是否有可用于任何工作表的单元格的抽象RANGE?”答案是否定的,甚至命名范围只是对真实工作表上真实单元格集的方便引用。

但是,您可以以编程方式隐藏工作表,以便用户不会看到它,并且仍然可以使用该工作表上的单元格和范围。只是做:

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

你问的是什么“非常隐藏”? 这意味着用户无法转到“格式”,“工作表”,“取消隐藏”并使工作表可见。

因此,如果我正确理解你想要的东西,只需以编程方式隐藏其中一张,然后使用Dave的技术在这个隐藏(或非常隐藏)工作表上创建一个范围的命名引用。

答案 1 :(得分:1)

这将是一个命名范围。您可以引用选定的单元格,只需在公式栏旁边输入“A1”的名称。这会创建一个不会改变的命名范围。

或者,您可以创建基于公式的命名范围,因此可能会随着电子表格中的数据更改而更改。您可以从“定义名称”选项(位于Office 2010的“公式”功能区中)执行此操作。

命名范围可以从VBA访问,(我很确定)来自.net。

所以你要从vba访问命名范围,如下所示:

Range["MyNamedRange"]

答案 2 :(得分:1)

是的,VSTO中的Microsoft.Office.Tools.Excel命名空间中有一个NamedRange控件。这是host control,它与Microsoft.Office.Interop.Excel.Range命名空间中的本机Range控件不同。