在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
索引属性是零基数,除非在别处指定。 床单属性是一个基础。 您需要: