-1
我想根据变量选择工作表。我可以用变量sname成功重命名工作表,但不能激活相同的工作excel vba:工作表名称作为变量
Dim sname as String
sname = Trim(Cells(row, 12).Value)
Sheets("Blank (2)").name = sname
Sheets(sname).Activate
Sheets(sname).Select
我想根据变量选择工作表。我可以用变量sname成功重命名工作表,但不能激活相同的工作excel vba:工作表名称作为变量
Dim sname as String
sname = Trim(Cells(row, 12).Value)
Sheets("Blank (2)").name = sname
Sheets(sname).Activate
Sheets(sname).Select
你说这是行得通的吗?
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。
适合我。你会得到什么错误? – CustodianOfCode
我得到的错误'下标超出范围' –
为什么你需要'。激活'和'。选择'无论如何表? –