首页 文章

Excel 2013后Excel VBA WorkSheet.Copy

提问于
浏览
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”之后 . 我发现复制的工作表成为活动工作表 .

Get Handle on last worksheet copied by Worksheet.Copy

VBA Copy Sheet to End of Workbook (with Hidden Worksheets)

但我的问题是我需要工作表保持特定的顺序 .

谢谢

编辑:

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”之后获得新工作表 .

2 回答

  • 0

    可以添加现有代码

    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然后
    表格(wst.Index 1).Visible = True
    ActiveSheet.Move After:= wst
    表格(wst.Index 2).Visible = False
    万一

    End Sub
    
  • 3

    除非在别处指定,否则index属性为零 . 床单属性是一个基础 . 你需要:

    • 在索引中添加1,不是首选 .

    • 更好地引用.name属性 .

    • 参考您拥有的工作表变量I.e. Wst.copy之后:= wst,最好 .

    • 或者将隐藏的工作表移动到新工作表之后 .

相关问题