识别除名字以外的工作表

工作表可以通过其名称来标识,例如:

Dim mysheet As Worksheet Set mysheet = ThisWorkbook.Sheets("My Sheetname") 

现在我想知道一个工作表是否可以被识别,而不是通过它的名字,例如通过一些独特的ID或某些财产或其他。

我的问题如下:

参考上面的代码片段:如果用户更改工作表的名称(例如,从“我的表”到“您的表”),则该片段显然将不再工作。

这是一篇非常好的文章,它解释了最好使用SheetID (也称为代号)而不是Sheet Name。

引用:

Codename属性是Excel用来标识每个工作表的内部名称。 与Worksheet.Name属性不同,Codename保持不变,无论表名称或图纸顺序如何。

代码名称也可以更改,以便更具描述性:

 ThisWorkbook.VBProject.VBComponents("Sheet1").Name = "Revenue_Actuals" 

接着

 Revenue_Actuals.Range("C2").value = 10 

工作正常。

使用代码名称(比如Sheet1.Range("C1").value )是一个好主意,但是如上所述在运行时改变代码名称并不被一些开发者认为是好的做法(参见例如上面链接的文章的评论)。

使用图表索引是另一种方式,但我个人更喜欢代码的名称。

最后, 本文列出了可以引用工作表或工作簿的多种方法。

我希望这有帮助!

你可以通过索引来访问它们,比如第二张纸

 Set mysheet = ThisWorkbook.Sheets(2)