在Excel 2013之后的Excel VBA WorkSheet.Copy
我想复制一张工作表,并将其直接放在另一张工作表之后。 但是当涉及到隐藏的表单时我遇到了麻烦。
使用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”之后。 我发现复制的纸张成为活动纸张。
获取由Worksheet.Copy复制的最后一个工作表上的句柄
VBA复制工作表到工作簿结尾(带有隐藏的工作表)
但我的问题是我需要工作表保持特定的顺序。
谢谢
编辑:
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”之后获得新的工作表。
现有的代码可以添加
Sub test() Dim ws1 AS Worksheet Set wst = Sheets("Sheet1") wst.Copy After:=Sheets(wst.Index) ThisWorkbook.ActiveSheet.Move After:=Sheets(wst.Index)
If (ActiveSheet.Index - wst.Index - 1) <> 0 Then Sheets(wst.Index + 1).Visible = True ActiveSheet.Move After:=wst Sheets(wst.Index + 2).Visible = False End If
End Sub
索引属性是零基数,除非在别处指定。 床单属性是一个基地。 您需要:
- 将1添加到索引,不是首选。
- 引用.name属性,更好。
- 参考后面的表格variables,即Wst.copy:= wst,最好。
- 或者将隐藏的表格移到新的表格之后。