可以通过名称来标识工作表,例如:
Dim mysheet As Worksheet
Set mysheet = ThisWorkbook.Sheets("My Sheetname")
现在我想知道是否可以通过名称来识别工作表,例如通过某些唯一ID或某些属性或其他任何内容来识别。
我的问题如下:
请参阅上面的代码段:如果用户更改了工作表的名称(例如,从“我的工作表名称”更改为“您的工作表名称”),则该代码段显然将不再有效。
答案 0 :(得分:5)
This是一篇非常好的文章,解释说最好使用SheetID
(也称为代号)代替Sheet
名称。
引用:
Codename属性是Excel用于标识的内部名称 每张纸。与Worksheet.Name属性不同,代号仍然存在 无论工作表名称或工作表顺序如何,都是一样的。
也可以更改代码名称,使其更具描述性:
ThisWorkbook.VBProject.VBComponents("Sheet1").Name = "Revenue_Actuals"
然后
Revenue_Actuals.Range("C2").value = 10
工作正常。
使用代号(例如Sheet1.Range("C1").value
)是一个好主意,但是如上所述更改代码名称在运行时并不是一些开发人员认为的好习惯(例如,请参阅上面链接的文章。)
使用工作表索引是另一种方法,但我个人更喜欢代码名称。
最后,this article列出了可以引用工作表或工作簿的许多方法。
我希望这有帮助!
答案 1 :(得分:1)
你可以通过索引来访问它们,例如对于第二张表
Set mysheet = ThisWorkbook.Sheets(2)