excel vba:工作表名称作为变量

时间:2016-11-07 02:27:50

标签: vba

我正在尝试根据变量选择工作表。我可以使用变量sname成功重命名工作表,但无法激活相同的

Dim sname as String
sname = Trim(Cells(row, 12).Value)
Sheets("Blank (2)").name = sname
Sheets(sname).Activate
Sheets(sname).Select

1 个答案:

答案 0 :(得分:2)

您说这有效吗?

Sheets("Blank (2)").name = sname

然后,执行此操作:

With Sheets("Blank (2)")
    .Name = sname
    .Activate
    .Select
End With

我们的想法是获取您正在使用的工作表的引用,而不是每次都从Sheets集合中不断获取对象。

可替换地:

Dim target As Worksheet
Set target = ThisWorkbook.Worksheets("Blank (2)")
target.Name = sname
target.Activate
target.Select

请注意,Sheets集合,在您使用它时不合格,会隐式引用活动工作簿。假设活动工作簿与编写代码的工作簿相同,最好使用ThisWorkbook限定呼叫,并使用Worksheets集合 - 因为Sheets集合可以包含非工作表对象(例如图表)。

最后,我怀疑这里有.Select任何需要的东西。详细了解如何避免.Select.Activate here