【发布时间】:2013-04-27 03:44:51
【问题描述】:
我想复制一个工作表并将其直接放在另一个工作表之后。但是当涉及到隐藏的工作表时,我遇到了麻烦。
我使用 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”之后直接获得新工作表。
【问题讨论】:
-
为什么不使用
wst.copy after:=wst? -
@glh 说了什么。您已经将
wst作为 Worksheet 变量。只需将其用于After参数:) -
wst.copy after:=wst和wst.copy after:=Sheets("Sheet1")产生相同的结果。我的新工作表位于隐藏工作表之后,而不是直接在“Sheet1”之后 -
但是是的,因为使用
wst.copy after:=wst,它会做得更多
标签: vba excel excel-2013