我想复制一张工作表并将其直接放在另一张工作表之后 . 但是当涉及到隐藏的纸张时我遇到了麻烦 .
使用Excel 2013我打开一个新的工作簿 . 在“Sheet1”之后添加工作表 . 将其重命名为“HiddenSheet2”在“HiddenSheet2”之后添加工作表 . 重命名新工作表“Sheet3”所以我有“Sheet1” - “HiddenSheet1” - “Sheet3”然后隐藏“HiddenSheet1”
接下来运行此VBA代码:
Sub test()
Dim ws1 AS Worksheet
Set wst = Sheets("Sheet1")
wst.Copy After:=Sheets(wst.Index)
End Sub
插入的纸张放在“HiddenSheet2”之后而不是“Sheet1”之后 . 我发现复制的工作表成为活动工作表 .
Get Handle on last worksheet copied by Worksheet.Copy
VBA Copy Sheet to End of Workbook (with Hidden Worksheets)
但我的问题是我需要工作表保持特定的顺序 .
谢谢
编辑:
Sub test()
Dim ws1 AS Worksheet
Set wst = Sheets("Sheet1")
wst.Copy After:=Sheets(wst.Index)
ThisWorkbook.ActiveSheet.Move After:=Sheets(wst.Index)
End Sub
这不会直接在“Sheet1”之后获得新工作表 .
2 回答
可以添加现有代码
除非在别处指定,否则index属性为零 . 床单属性是一个基础 . 你需要:
在索引中添加1,不是首选 .
更好地引用.name属性 .
参考您拥有的工作表变量I.e. Wst.copy之后:= wst,最好 .
或者将隐藏的工作表移动到新工作表之后 .