使用VBA中运行时添加的工作表代码名称

由于各种原因,我更喜欢使用代号来引用VBA代码中的工作表。

但是,当我dynamic地添加一个这样的工作表(只有一张工作表):

Sub example() Worksheets.Add After:=Worksheets(Worksheets.Count) 'SOME OTHER CODE HERE Sheet2.Activate End Sub 

…它不会编译,因为Sheet2没有被定义为一个variables。

有没有解决的办法? 目前我正在恢复使用表单名称:

 Sheets("Sheet2").Activate 

有没有办法使用代号来做到这一点?

提前致谢。

将VBA中的代码名称用于编译时存在的表单是一个好主意。 如您所知,即使用户更改其名称,也可以引用该工作表。

但是,在运行时很难做到。 如果用户已授予对VBA项目对象模型的访问权限,则可以使用VBAProject属性来执行此操作。 但是,只要设置一个WorkSheetvariables,您就可以完成您想要的function,持续进行用户validation,

 Sub example() Dim NewWorkSheet1 as Excel.Worksheet Worksheets.Add After:=Worksheets(Worksheets.Count) Set Newworksheet1 = ActiveSheet 'SOME OTHER CODE HERE End Sub 

请注意,添加工作WorkSheet它是ActiveSheet

此外,如果需要该级别的范围,则可以将WorkSheet声明为项目级或模块级variables。