1

我想复制一个工作表并将其直接放在另一张工作表之后。但是当涉及隐藏的表格时,我遇到了麻烦。

使用 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”之后直接获得新工作表。

4

2 回答 2

3

可以添加现有代码

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
于 2013-05-03T08:56:29.380 回答
0

index 属性是零基数,除非在别处指定。Sheets 属性是一个的基础。您需要:

  1. 将 1 添加到索引,不是首选。
  2. 更好地引用 .name 属性。
  3. 参考您拥有的工作表变量,即 Wst.copy after:=wst,最好。
  4. 或者将隐藏的工作表移动到新工作表之后。
于 2013-05-02T21:45:41.163 回答