在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属性。
  • 引用你有Ie Wst.copy之后的表格变量:= wst,最好。
  • 或者将隐藏的表格移动到新的表格之后。
  • 链接地址: http://www.djcxy.com/p/35759.html

    上一篇: Excel VBA WorkSheet.Copy After Excel 2013

    下一篇: Can't edit the existing Excel file with NPOI?