Excel VBA创建按钮,用于复制/重命名工作表和整个工作簿

Excel VBA创建按钮,用于复制/重命名工作表和整个工作簿,vba,excel,Vba,Excel,我正在尝试创建一个道路设计电子表格,可以反复用于数百条路线。我得到的一切工作与一个主表被复制和两张表用作查找表。我想在角落里添加两个按钮,用于: 1复制母版图纸并将其重命名为alignmentname-。这将在当前工作簿中,并将用于道路路线中的每条曲线。如果有办法删除复制的工作表中的这两个按钮,那就更好了 2一个按钮只复制主工作表,两个补充工作表复制到新工作簿 到目前为止,我已经: Sub Button10_Click() Worksheets("Master (DO NOT MODIF

我正在尝试创建一个道路设计电子表格,可以反复用于数百条路线。我得到的一切工作与一个主表被复制和两张表用作查找表。我想在角落里添加两个按钮,用于:

1复制母版图纸并将其重命名为alignmentname-。这将在当前工作簿中,并将用于道路路线中的每条曲线。如果有办法删除复制的工作表中的这两个按钮,那就更好了

2一个按钮只复制主工作表,两个补充工作表复制到新工作簿

到目前为止,我已经:

Sub Button10_Click()
    Worksheets("Master (DO NOT MODIFY)").Copy _
    Before:=ActiveWorkbook.Sheets("Master (DO NOT MODIFY)")
End Sub
现在只需要创建一个基本文件的副本就可以了,但我还不能重命名它。重命名工作表的代码不起作用,我不太清楚原因

Sheets(Count).Name = Range("H7").Value & "-" & Count
其中,count是一个公共变量,每次添加一条新曲线时,该变量都会增加1,H7是路线的名称

我还玩过ActiveSheet。活动表和工作表

第一个按钮的代码:

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

这就是你想要的吗?不能使用计数,因为工作表在工作表之前移动,如果增加计数,则它将引用错误的工作表

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

这就是你想要的吗?不能使用计数,因为工作表在工作表之前移动,如果增加计数,则它将引用错误的工作表

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

谢谢你。我没有想过这样定义活动表。我将第一个按钮的代码附加到原始帖子中。你知道我怎样才能让它把最后三张纸复制到新的工作簿上吗?请稍等。更新答案谢谢。我没有想过这样定义活动表。我将第一个按钮的代码附加到原始帖子中。你知道我怎样才能让它把最后三张纸复制到新的工作簿上吗?请稍等。更新答案