Excel 创建新图纸并在循环中重命名它们
我正在使用Excel 2013。我有一个宏,可以添加新工作表并重命名它。但是,当我第二次运行宏时,它会抛出一个错误,因为有一个具有刚刚创建的名称的工作表。例如,我创建了一个工作表并将其命名为Account,下次运行宏时,我希望它是Account1,下次是Account2,依此类推。在没有看到其余代码的情况下,请参见下面的内容,假设您要创建10个新选项卡,从Account1开始,以Account10结束。它的工作原理是使用计数器变量从10开始倒计时,每次创建新选项卡时,它只是将计数器的值附加到sheetname中Excel 创建新图纸并在循环中重命名它们,excel,vba,Excel,Vba,我正在使用Excel 2013。我有一个宏,可以添加新工作表并重命名它。但是,当我第二次运行宏时,它会抛出一个错误,因为有一个具有刚刚创建的名称的工作表。例如,我创建了一个工作表并将其命名为Account,下次运行宏时,我希望它是Account1,下次是Account2,依此类推。在没有看到其余代码的情况下,请参见下面的内容,假设您要创建10个新选项卡,从Account1开始,以Account10结束。它的工作原理是使用计数器变量从10开始倒计时,每次创建新选项卡时,它只是将计数器的值附加到sh
Sub Sheet_Creation()
Dim counter As Integer
For counter = 10 To 1 Step -1
Sheets.Add.Name = "Account" & counter
Next counter
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
End With
End Sub
注意:您可以通过编辑第一行来管理应用于新创建工作表的基本名称
更新
根据您的新要求,您需要能够使用问题中的基本名称“Account”访问稍后创建的最新工作表,请使用上述过程的此版本:
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
现在,稍后当您希望选择该图纸时,可以使用以下代码:
Sheets([Newest_Account]).Select
上面的宏将创建名为Account的新工作表,其中=工作表总数。我有一个宏,用于添加。。。我们不知道你在说什么宏。显示您正在使用的宏。你有没有试过改变什么,使名字不总是一样的?您尝试了什么,失败的原因是什么?您好,谢谢回复,这里是code-Sheets.Add.Name=Account。当我第一次运行宏时,它正在添加一个工作表并将其重命名为Account。但当我重新运行宏时,它会抛出一个错误,因为存在一个名为Account的现有工作表。我想要的是,每次运行宏时,请将其命名为Account1、account2等等。。希望我清楚。谢谢,这不是我想要的。您正在将工作表的总数附加到名称。OP仅在工作表已经存在且使用了名称时才需要数字。还有一个问题要问,请您也回答这个问题好吗?Sheets控件。选择范围F14。选择选择。复制SheetsAccount。选择范围A2。选择选择。粘贴特殊粘贴:=xlPasteValues,操作:=xlNone,SkipBlanks:=False,转置:=False Application.CutCopyMode=False--------正如您所看到的,我正在从名为Control的工作表复制一个单元格,并粘贴到新创建的名为Account的工作表中。如果重新运行宏,将创建一个新的工作表Account1,那么有没有办法动态更改它?这是我第一次运行宏-它将创建名为Account的工作表,上面的代码将正常工作。第二次运行宏时,将创建工作表Account1。现在我想要的是,上面的代码为Account1工作?i、 e Selection.copy SheetsAccount应根据创建的新图纸动态更改。如果新创建的工作表是Account5,那么代码应该选择工作表Account5,希望我很清楚。。thanks@SaranyaSuresh请看我答案底部的更新。
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