将隐藏的工作表(包括分配了宏的形状)复制到另一个工作表并隐藏工作表

时间:2017-10-12 19:35:15

标签: excel-vba vba excel

我有一张带有七个矩形的工作表,每个矩形都有一个分配给它的宏,我就像模板一样美化它。 有很多这样的床单,我希望它们都隐藏起来。

现在,我想取消隐藏一张纸,比如sheet1,以完全相同的格式复制包括形状和相应宏在内的所有内容,将其粘贴在纸张3中并再次隐藏纸张1。

我用以下代码尝试了这个,但不知道对象和格式是不是被复制了。

Sub abcd()
      Dim ws As Worksheet
      Set ws = Sheets("Sheet2")
      ws.Visible = xlSheetVisible
          ws.Select

          Selection.Copy

      Dim rs As Worksheet
      Set rs = Sheets("Sheet4")
          rs.Select                                              
          ActiveSheet.Paste
          Application.CutCopyMode = False
End Sub

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

您应该复制整张纸,而不仅仅是选择:

'// get the sheet to be copied
Dim ws As Worksheet
Set ws = Sheet1


'// copy it and position before, say sheet5
ws.Copy Before:=Sheet5

'// get a reference to the new sheet
Dim WSNew as worksheet
Set WSNew = Sheets(Sheet5.Index - 1)

'// Give the sheet a new name and make it visible.
WSNew.Name = "New name"
WSNew.Visible = xlSheetVisible

请注意,我使用的是内部工作表编程名称,而不是显示名称 - 由于用户无法更改内部名称,因此更可靠,但您可以在工作表的属性选项卡中更改它。

此外,无需使模板工作表可见,只需复制复制工具。