Excel VBA创buildbutton来复制/重命名工作表和整个工作簿

我正在尝试创build一个可以反复使用数百个路线的道路devise电子表格。 我得到了所有的工作与一个主表复制和两张用作查找表。 我想添加两个button在angular落,可用于:

1)复制主表,并重命名alignment名称 – ##。 这将在当前的工作簿内,并将用于道路alignment中的每条曲线。 如果有办法删除复制表单中的这两个button,情况会更好。

2)一个button,用于只复制母版纸和两张补充纸到新的工作簿。

到目前为止我有:

Sub Button10_Click() Worksheets("Master (DO NOT MODIFY)").Copy _ Before:=ActiveWorkbook.Sheets("Master (DO NOT MODIFY)") End Sub 

它现在工作正常只是创build一个基本文件的副本,但我一直无法重新命名。 重命名工作表的代码不起作用,我不太清楚为什么。

 Sheets(Count).Name = Range("H7").Value & "-" & Count 

其中count是一个公共variables,每次增加一个新的曲线,H7是alignment的名称。

我也玩过ActiveSheet。 activesheetWorksheets

代码为第一个button:

 Public Count As Integer Sub Button10_Click() If Count = 0 Then Count = 1 End If Dim ws As Worksheet Worksheets("Master (DO NOT MODIFY)").Copy _ Before:=ActiveWorkbook.Sheets("Master (DO NOT MODIFY)") Set ws = ActiveSheet ws.Name = Range("C2").Value & Count Count = Count + 1 End Sub 

这是你正在尝试? 因为工作表在工作表before移动before所以不能使用count ,如果您正在递增计数,则会引用错误的工作表。

 Sub Button10_Click() Dim ws As Worksheet Worksheets("Master (DO NOT MODIFY)").Copy _ Before:=ActiveWorkbook.Sheets("Master (DO NOT MODIFY)") Set ws = ActiveSheet ws.Name = Range("H7").Value & "-" & Count End Sub 

关于你的第二个问题,你可以尝试这样的。 我假设主人不是最后一张或最后一张。 主人之后还有两张纸。

 Sub Button10_Click() Dim ws As Worksheet Dim wsMaster As Worksheet Dim MyArray(1 To 3) As String Dim n As Long Set wsMaster = ThisWorkbook.Worksheets("Master (DO NOT MODIFY)") wsMaster.Copy Before:=wsMaster Set ws = ActiveSheet ws.Name = Range("H7").Value & "-" & Count n = ThisWorkbook.Sheets.Count MyArray(1) = wsMaster.Name MyArray(2) = ThisWorkbook.Sheets(n - 1).Name MyArray(3) = ThisWorkbook.Sheets(n).Name '~~> This will create a new workbook with the 3 sheets ThisWorkbook.Sheets(MyArray).Copy End Sub