在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. 将1添加到索引,不是首选。
  2. 引用.name属性,更好。
  3. 参考后面的表格variables,即Wst.copy:= wst,最好。
  4. 或者将隐藏的表格移到新的表格之后。