Excel VBA宏复制工作表和计数+;1.
我试图在工作表Excel VBA宏复制工作表和计数+;1.,excel,vba,Excel,Vba,我试图在工作表概述上创建宏。此工作表应复制并重命名为测试1。如果我返回到概览工作表并再次启动宏,ws的新名称应该是test2,依此类推 我已经尝试了使用Count和if-then的解决方案,但它不起作用。当前它运行一次,然后它说ws已经存在: Sub CopyWs() Dim NewName As String ActiveSheet.Copy Before:=ActiveSheet NewName = "Test " & WsNo + 1 WsNo = WsNo + 1 A
概述上创建宏。此工作表应复制并重命名为测试1
。如果我返回到概览工作表并再次启动宏,ws
的新名称应该是test2
,依此类推
我已经尝试了使用Count
和if-then的解决方案,但它不起作用。当前它运行一次,然后它说ws
已经存在:
Sub CopyWs()
Dim NewName As String
ActiveSheet.Copy Before:=ActiveSheet
NewName = "Test " & WsNo + 1
WsNo = WsNo + 1
ActiveSheet.Name = NewName
End Sub
我不确定这是否是您想要的,但我在过去遇到过类似的问题,我使用以下方法来解决它
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")