使用数组引用名称属性
我正在处理一个需要我根据数组中某个位置的值来select工作表的项目。 我用值填充了desArr()
(Stringtypes), desArr(0)
包含了我想要引用的表的名称。 为了避免用户更改标签名称和弄乱代码的问题,我试图引用工作表的CodeName。
通常情况下,我可以做到这一点:
ThisWorkbook.Worksheets(Import.Name)
其中Import
是在VB编辑器中的(Name)
属性下指定的。 但是,现在我想要引用该名称,如input取决于desArr(0)
的值。 我试图做到以下,但无济于事:
ThisWorkbook.Worksheets(desArr(0).Name) ThisWorkbook.Worksheets(desArr(0) & ".Name")
有没有人有任何想法如何解决这个问题?
只要使用:
Import
这是引用一个表单对象的方式,而不需要知道它的Name
属性。 只需使用其variables/对象名称。 以上相当于,但是比起来,
ThisWorkbook.Worksheets(Import.Name)
你所说的“CodeName”和(Name)
“property”不是一个属性。 这只是对象variables的名称。 从我可以从你的问题推断,你的工作表对象被称为Import
所以只是使用它。
编辑:
很难理解你在问什么。 澄清一点:
如果我理解正确,你有一个名为“导入”的工作表,并且希望能够防范这种情况:
好的,有些用户决定重命名工作表是个好主意。 请注意,这将表单对象的Name
属性的值更改为"User-input crap"
。 Name
属性和Tab中写的东西总是一样的 ; 他们是一样的东西; 他们是一对一的链接。
但是,表单对象本身仍然称为Import
,或者之前的任何情况。 (默认情况下,它是Sheet1
,但也许你在属性窗口中改变了它。)请参阅:
无论用户input废话,我仍然可以说,例如:
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"
但为此,我不得不知道用户在工作表标签中input了什么,我不知道。