Excel VBA宏复制工作表并计数+ 1

时间:2017-02-08 07:57:35

标签: excel-vba vba excel

我尝试在工作表overview上创建一个宏。应复制此工作表并将其重命名为Test 1。如果我返回概述工作表并再次启动宏,则ws的新名称应为Test 2,依此类推。

我已经尝试过使用Count的解决方案,如果是,但它无效。目前它运行一次然后它说ws已经存在:

Sub CopyWs()

Dim NewName As String

ActiveSheet.Copy Before:=ActiveSheet

NewName = "Test  " & WsNo + 1

WsNo = WsNo + 1

ActiveSheet.Name = NewName

End Sub

1 个答案:

答案 0 :(得分:0)

我不确定这是否是您正在寻找的内容,但过去我遇到了类似的问题,我使用以下方法来解决它。

    Dim worksheetName As String
    worksheetName = "Test 1"
    worksheetNumber = 2
    CheckName:
        For Each ws in Sheets
            ' If the desired worksheet name exists
            If ws.name = worksheetName Then
                ' Change the worksheetName to be Test x+1 and increment worksheetNumber
                worksheetName = "Test " & worksheetNumber
                worksheetNumber = worksheetNumber + 1
                GoTo CheckName ' return to the CheckName label and start again
            End If
        Next ws

基本上,我们正在做的是循环遍历当前工作簿中的每个工作表,并检查它们中的任何一个是否与我们要插入的工作表具有相同的名称。如果他们这样做,我们将名称更改为新名称并再次检查;如果没有,我们有新的名字。

编辑:另外,我建议将上面的代码放在一个将工作表名称作为参数的函数中,这样就可以轻松更改所需的名称,如下所示:

    Function worksheetName(desiredName As String) As String
        Dim worksheetName As String
        worksheetName = desiredName
        ' rest of code follows ...
    End Function

然后可以这样调用:

    NewName = worksheetName("Test")