使用VBA中在运行时添加的工作表的工作表代号

时间:2014-03-23 23:15:50

标签: excel excel-vba vba

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

但是,当我动态添加这样的工作表(到只有一张工作表的工作簿)时:

Sub example()

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

End Sub

...它不会编译,因为Sheet2未定义为变量。

有解决方法吗?目前我正在恢复使用工作表名称:

Sheets("Sheet2").Activate

有没有办法使用代号?

提前致谢。

1 个答案:

答案 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声明为项目级或模块级变量。