出于各种原因,我更喜欢使用代号来引用VBA代码中的工作表。
但是,当我动态添加这样的工作表(到只有一张工作表的工作簿)时:
Sub example()
Worksheets.Add After:=Worksheets(Worksheets.Count)
'SOME OTHER CODE HERE
Sheet2.Activate
End Sub
...它不会编译,因为Sheet2
未定义为变量。
有解决方法吗?目前我正在恢复使用工作表名称:
Sheets("Sheet2").Activate
有没有办法使用代号?
提前致谢。
答案 0 :(得分:1)
在VBA中使用codenames作为编译时存在的工作表是个好主意。如您所知,即使用户更改其名称,它也允许您引用工作表。
但是,在运行时更难做到。如果用户已授予对VBA项目对象模型的访问权限,则可以使用VBAProject属性执行此操作。但是,您可以通过设置WorkSheet
变量来完成您想要的,持续的用户访问工作表:
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声明为项目级或模块级变量。