创建新工作表并在循环中重命名它们

时间:2015-10-14 15:19:03

标签: excel vba

我正在使用Excel 2013.我有一个添加新工作表并重命名的宏。但是当我第二次运行宏时,它会抛出一个错误,因为有一个名称刚刚创建的工作表。例如,我创建一个工作表并将其命名为Account,下次当我运行宏时,我希望它是Account1,下次是Account2,依此类推。

3 个答案:

答案 0 :(得分:1)

在没有看到其余代码的情况下,请参阅下文,其中假设您要创建10个新选项卡,从Account1开始,以Account10结束。它的工作原理是使用计数器变量从10开始倒计时,每次创建新标签时,它只是将计数器的值附加到表单名称的“帐户”。

Sub Sheet_Creation()

    Dim counter As Integer

    For counter = 10 To 1 Step -1
        Sheets.Add.Name = "Account" & counter
    Next counter

End Sub

答案 1 :(得分:0)

此过程将添加一个新工作表并正确命名:

System.properties

注意:您可以通过编辑第一行来管理应用于新创建的工作表的基本名称。

<强>更新

根据您的新要求,您可以使用基本名称(&#39;问题中的帐户&#39;)访问稍后创建的最新工作表,请使用以上程序的此版本:< / p>

Sub AddWS()
    Const WS_NAME = "Account"
    Dim c
    On Error Resume Next
    With Sheets.Add(, ActiveSheet)
        Do
            .Name = WS_NAME & c
            If Err = 1004 Then
                c = c + 1
                Err.Clear
            Else
                Exit Do
            End If
            DoEvents
        Loop
    End With
End Sub

现在,稍后当您希望选择该表时,可以使用以下代码:

Sub AddWS()
    Const WS_NAME = "Account"
    Dim c
    On Error Resume Next
    With Sheets.Add(, ActiveSheet)
        Do
            .Name = WS_NAME & c
            If Err = 1004 Then
                c = c + 1
                Err.Clear
            Else
                Exit Do
            End If
            DoEvents
        Loop
        ThisWorkbook.Names.Add "Newest_" & WS_NAME, .Name
    End With
End Sub

答案 2 :(得分:-1)

Private Sub CreateSheet()
    Dim ws As Worksheet
    With ActiveWorkbook
        Set ws = .Sheets.Add(After:=.Sheets(.Sheets.Count))
        ws.Name = "Account" & Worksheets.Count
    End With
End Sub

上述宏将创建名为Account#的新工作表,其中#=总工作表数。

相关问题