【发布时间】:2019-09-12 06:44:28
【问题描述】:
我正在尝试复制给定的工作表并重命名该副本 sheet2,但如果 sheet2 存在,则将其重命名为 sheet3,如果 sheet3 存在,则将其重命名为 sheet4 等。
我正在尝试使用带有错误处理的无限 while 循环(即,如果它尝试重命名工作表并且存在相同的工作表,它会处理错误并将后缀增加 1,但如果没有发生错误,它会退出循环)。
Sub Clone()
Application.ScreenUpdating = False
Dim ParamsToBeCloned As String
Dim wsNumber As Long
Dim suffix As Long
ParamsToBeCloned = Sheets("Interface").Range("ParamsToBeCloned")
wsNumber = Sheets(ParamsToBeCloned).index
Sheets(ParamsToBeCloned).Copy after:=Sheets(wsNumber)
suffix = 2
Do While True
On Error GoTo sheetExists
ActiveSheet.Name = ParamsToBeCloned & suffix
Exit Do
sheetExists:
suffix = suffix + 1
Loop
Sheets("Interface").Select
Application.ScreenUpdating = True
End Sub
这在 Params2 存在以产生 Params3 时有效,但如果 Params2 和 Params3 都存在,则会抛出错误
“该名称已被占用。请尝试其他名称。”
我不明白为什么当 Params2 存在时它能够生成 Params3,但是当 Params2 和 Params3 都存在时它不能生成 Params4。
也就是为什么第二次没有处理错误?
【问题讨论】:
标签: excel vba error-handling