使用数组引用名称属性

时间:2014-06-06 15:31:09

标签: excel vba

我正在开发一个项目,要求我根据数组中位置的值选择工作表。我已使用值填充desArr()(类型为String),desArr(0)包含我要引用的工作表的名称。为了避免用户更改选项卡名称和搞乱代码的问题,我试图引用工作表的CodeName。

通常,我可以这样做:

ThisWorkbook.Worksheets(Import.Name) 

其中Import在VB编辑器的(Name)属性下指定。但是,我现在想要根据desArr(0)的值在输入中可变地引用该名称。我尝试了以下但无济于事:

ThisWorkbook.Worksheets(desArr(0).Name)

ThisWorkbook.Worksheets(desArr(0) & ".Name")

有没有人知道如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

只需使用:

Import

这是引用工作表对象而无需知道其Name属性的方法。只需使用其变量/对象名称。上述内容相当于,但比其复杂得多,

ThisWorkbook.Worksheets(Import.Name) 

您所指的" CodeName"以及(Name)"属性"不是财产。它只是对象变量的名称。根据我的问题推断,您的工作表对象称为Import,所以只需使用它。


编辑:

很难理解你在问什么;澄清一下:

如果我理解正确,你有一张叫做#34;导入"的表,你希望能够防范这种情况:

enter image description here

好的,有些用户认为重命名工作表是个好主意。请注意,这会将表格对象的Name属性值更改为"User-input crap"Name属性和选项卡中写的内容始终相同;他们是一回事;他们一对一地联系在一起。

但是,工作表对象本身仍称为Import,或者之前的任何内容。 (默认情况下它是Sheet1,但您可能在“属性”窗口中更改了它。)请参阅:

enter image description here 无论用户输入废话,我仍然可以说,例如:

Import.Cells(1, 1).Value = "frog"

我也可以这样说,这是无用的复杂但完全等同的:

ThisWorkbook.Worksheets(Import.Name).Cells(1, 1).Value = "frog"

可以也这样说:

ThisWorkbook.Worksheets("User-input crap").Cells(1, 1).Value = "frog"

但为此,我必须知道用户在工作表标签中输入的内容,我不知道。