【问题标题】:Want to create new sheets that copy a template in a specific order based on a list of names on a sheet想要根据工作表上的名称列表创建以特定顺序复制模板的新工作表
【发布时间】:2019-02-03 02:58:42
【问题描述】:

我想根据列表创建新工作表,并让所有这些新工作表复制当前现有工作表上的模板。 我试过寻找示例,但我找到的所有示例都只创建一个工作表列表,或者只是复制模板。我知道我很接近,但我似乎无法让它工作。

这是我目前所拥有的,它可以工作,但是当创建工作表时,它们显示为 client3、client2、client1。我希望它以相反的顺序显示。我知道我需要在声明后更改副本,但每次尝试时都会出错。任何帮助,将不胜感激 我的工作表名称是客户和扫描

Option Explicit
Sub NewSheets()
Dim i As Integer
Dim ws As Worksheet
Dim sh As Worksheet
Dim sh2 As Worksheet
Set ws = Sheets("Scan")
Set sh = Sheets("Clients")
Set sh2 = Sheets("Scan")
Application.ScreenUpdating = 0

For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
        Sheets("Scan").Copy After:=sh2
        ActiveSheet.Name = sh.Range("A" & i).Value
Next i
End Sub

【问题讨论】:

    标签: excel vba excel-2007


    【解决方案1】:

    如下所示:

    Option Explicit
    Sub NewSheets()
    Dim ws As Worksheet: Set ws = Sheets("Scan")
    Dim sh As Worksheet: Set sh = Sheets("Clients")
    Dim i As Long
    
    Application.ScreenUpdating = False
    
    For i = 2 To sh.Range("A" & sh.Rows.Count).End(xlUp).Row
        Sheets("Scan").Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
        ActiveSheet.Name = sh.Range("A" & i).Value
    Next i
    
    Application.ScreenUpdating = True
    End Sub
    

    【讨论】:

    • 是的,这行得通,起初我遇到了一些错误,但那是因为在我意识到你之前没有办法知道之前,我重命名了工作表并将列表移动到不同的列你回复了:p。
    猜你喜欢
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    • 1970-01-01
    • 2022-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多