识别工作表而不是其名称

Jab*_*cky 3 excel vba excel-vba

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

Dim mysheet As Worksheet
Set mysheet = ThisWorkbook.Sheets("My Sheetname")
Run Code Online (Sandbox Code Playgroud)

现在我想知道是否可以通过名称识别工作表,例如通过某些唯一ID或某些属性或其他任何东西.

我的问题如下:

请参阅上面的代码段:如果用户更改工作表的名称(例如,从"我的工作表名称"更改为"您的工作表名称"),则该代码段显然将不再起作用.

Ioa*_*nis 5

是一篇非常好的文章,它解释了使用SheetID(也称为代号)而不是Sheet名称更好.

引用:

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

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

ThisWorkbook.VBProject.VBComponents("Sheet1").Name = "Revenue_Actuals"
Run Code Online (Sandbox Code Playgroud)

然后

Revenue_Actuals.Range("C2").value = 10
Run Code Online (Sandbox Code Playgroud)

工作良好.

使用代号(例如Sheet1.Range("C1").value)是一个好主意,但是如上所述在运行时更改代码名称并不是某些开发人员的好习惯(例如,参见上面链接文章的评论).

使用工作表索引是另一种方法,但我个人更喜欢代码名称.

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

我希望这有帮助!

  • 我不认为链接文章中的评论意味着更改代码名称不被视为良好做法.它们仅警告不要通过代码更改代码名称.通过VBE中的属性窗口更改代码名称是完全正确的(并且非常有用). (2认同)