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

excel vba:工作表名称作为变量,vba,Vba,我正在尝试根据变量选择工作表。我可以使用变量sname成功地重命名工作表,但无法激活该工作表 Dim sname as String sname = Trim(Cells(row, 12).Value) Sheets("Blank (2)").name = sname Sheets(sname).Activate Sheets(sname).Select 你是说这样行吗 然后,执行以下操作: With Sheets("Blank (2)") .Name = sname .Act

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

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

你是说这样行吗

然后,执行以下操作:

With Sheets("Blank (2)")
    .Name = sname
    .Activate
    .Select
End With
这样做的目的是获取正在使用的工作表的引用,而不是每次都从
工作表
集合中获取对象

或者:

Dim target As Worksheet
Set target = ThisWorkbook.Worksheets("Blank (2)")
target.Name = sname
target.Activate
target.Select
请注意,
Sheets
集合在您使用时是非限定的,它隐含地引用了活动工作簿。假设活动工作簿与编写代码的工作簿相同,最好使用
ThisWorkbook
限定调用,并使用
工作表
集合-因为
工作表
集合可以包含非工作表对象(例如图表)


最后,我怀疑是否有必要
。在这里选择任何内容。阅读有关避免
的更多信息。选择
。激活

你是说这有效吗

然后,执行以下操作:

With Sheets("Blank (2)")
    .Name = sname
    .Activate
    .Select
End With
这样做的目的是获取正在使用的工作表的引用,而不是每次都从
工作表
集合中获取对象

或者:

Dim target As Worksheet
Set target = ThisWorkbook.Worksheets("Blank (2)")
target.Name = sname
target.Activate
target.Select
请注意,
Sheets
集合在您使用时是非限定的,它隐含地引用了活动工作簿。假设活动工作簿与编写代码的工作簿相同,最好使用
ThisWorkbook
限定调用,并使用
工作表
集合-因为
工作表
集合可以包含非工作表对象(例如图表)


最后,我怀疑是否有必要
。在这里选择任何内容。阅读有关避免
的更多信息。选择
。激活

对我有效。您遇到了什么错误?我遇到了“下标超出范围”错误。您为什么需要
。激活
。仍要选择该工作表?在这种情况下,下标超出范围意味着该工作表不存在。当然是对的?确定你打开了正确的工作簿?对我来说很有用。您遇到了什么错误?我遇到了“下标超出范围”错误。您为什么需要
。激活
。仍要选择该工作表?在这种情况下,下标超出范围意味着该工作表不存在。当然是对的?确定打开了正确的工作簿?