1

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

谁能向我解释这些如何适合 Excel 对象模型以及如何以编程方式创建这样的东西(在 VBA 或 .NET 源代码中)。

谢谢。

4

3 回答 3

3

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

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

听起来您在问“是否有一个抽象的单元格范围可供 VBA 代码使用,而这些单元格在任何工作表上都不存在?” 答案是否定的,即使命名范围只是对真实工作表上一组真实单元格的方便引用。

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

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

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

因此,如果我正确理解了您想要的内容,只需以编程方式隐藏其中一张工作表,然后使用 Dave 的技术在此隐藏(或 VeryHidden)工作表上创建对范围的命名引用。

于 2010-05-18T16:15:43.130 回答
2

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

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

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

因此,您可以像这样从 vba 访问命名范围:

Range["MyNamedRange"]
于 2010-05-18T15:52:21.647 回答
1

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

于 2010-05-18T16:07:50.570 回答