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

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

任何人都可以向我解释这些如何适应Excel对象模型,以及如何编程(无论是在VBA或.NET源代码)创build这样的事情。

谢谢。

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

那么,正如戴夫所描述的那样,你可以在表单上给出一个特定范围的单元格“范围名称”,然后你可以用程序的方式来引用,但是这听起来不像你在问什么。

这听起来像是在问:“是否有一个可用于VBA代码的单元格的抽象范围,并不真正存在于任何工作表上? 答案是否定的,即使命名范围只是一个方便的参考真正的工作表上的一组真实的单元格。

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

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

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

所以,如果我正确地理解你想要的,只是以编程方式隐藏其中一张纸,然后使用戴夫的技术创build一个对这个隐藏(或非常隐藏)工作表的范围的命名参考。

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

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

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

所以你可以像这样访问vba命名的范围:

 Range["MyNamedRange"] 

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