我尝试在工作表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
答案 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")