EXCEL VBA复制样板sheet并重命名为XXX_1,再次执行就再复制一个重命名为XXX_2,如此循环,求助。
目的:复制样板sheet并重命名为XXX_1,再次执行就再复制一个重命名为XXX_2,如此循环,请问这功能能否用VBA实现?另:如果要在XXX_6时不再新建sheet,而...
目的:复制样板sheet并重命名为XXX_1,再次执行就再复制一个重命名为XXX_2,如此循环,请问这功能能否用VBA实现?
另:如果要在XXX_6时不再新建sheet,而是覆盖原来的XXX_1,这样的功能能否实现?
如果能实现,请教各位高手,代码如何写? 展开
另:如果要在XXX_6时不再新建sheet,而是覆盖原来的XXX_1,这样的功能能否实现?
如果能实现,请教各位高手,代码如何写? 展开
2个回答
展开全部
Private lngRunTimes As Integer '?行次数
Sub CopySheets()
Dim strShtName As String '工作表名称
Dim lngShtNo As Integer '?号
strShtName = "XXXXXX_"
Sheets("Sheet").Select
If lngRunTimes < 6 Then
lngRunTimes = lngRunTimes + 1
lngShtNo = Sheets.Count
Sheets("Sheet").Copy after:=Sheets(lngShtNo)
Else
lngRunTimes = lngRunTimes + 1
lngShtNo = lngRunTimes - (Int(lngRunTimes / 6) * 6)
Sheets(strShtName & Str(lngShtNo)).Delete
Sheets("Sheet").Copy after:=Sheets(lngShtNo)
End If
ActiveSheet.Name = "XXXXXX_" & Str(lngShtNo)
End Sub
大概写了下,因为删除时会有提醒,如果不想要,可以再给你改一下
Private lngRunTimes As Integer '?岘师悢
Sub CopySheets()
Dim strShtName As String '岺嶌昞柤徧
Dim lngShtNo As Integer '?崋
strShtName = "XXXXXX_"
Sheets("Sheet").Select
If lngRunTimes < 6 Then
lngRunTimes = lngRunTimes + 1
lngShtNo = Sheets.Count
Sheets("Sheet").Copy after:=Sheets(lngShtNo)
Else
lngRunTimes = lngRunTimes + 1
lngShtNo = lngRunTimes - (Int(lngRunTimes / 6) * 6)
Application.DisplayAlerts = False '钀暵采帵瀥
Sheets(strShtName & Str(lngShtNo)).Delete
Application.DisplayAlerts = True '懪奂采帵瀥
Sheets("Sheet").Copy after:=Sheets(lngShtNo)
End If
ActiveSheet.Name = "XXXXXX_" & Str(lngShtNo)
End Sub
追问
两个问题:1.运行一次以后复制的sheet名字是XXX_3不是2,能否解决?
2.如果在后面的代码需要active刚才复制的sheet,但是复制的sheet不是active状态,应该怎么active?Workbooks("yyyyyy").Sheets(xxxxxx).Activate,就是xxxx应该写什么?
非常感谢!
追答
1.运行时,book内只有“Sheet”一个表,我这测试正常。。。。
2. ActiveSheet.Name = "XXXXXX_" & Str(lngShtNo)
所以你可以这样写
Workbooks("yyyyyy").Sheets("XXXXXX_" & Str(lngShtNo)).Activate
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询