Уважаемые специалисты!
Помогте, пожалуйста, поправить код.
Задача: задано определенное имя листа (sSheetName), который нужно создать. Код должен проверять наличие листа с таким же именем. Если его нет, создать лист с именем sSheetName .
Если он есть, то переименовать имеющийся лист с припиской в имени "sSheetName_old" (если опять же такой есть, то "sSheetName_old2" и тд) и создать лист с именем sSheetName.
Если код находит sSheetName первый раз, то все хорошо. Он создает лист с "sSheetName_old". Однако если "sSheetName_old" уже есть, он не переименовывает "sSheetName" в "sSheetName_old2", а просто создает новые лист без изменения названий уже существующих
Помогте, пожалуйста, поправить код.
Задача: задано определенное имя листа (sSheetName), который нужно создать. Код должен проверять наличие листа с таким же именем. Если его нет, создать лист с именем sSheetName .
Если он есть, то переименовать имеющийся лист с припиской в имени "sSheetName_old" (если опять же такой есть, то "sSheetName_old2" и тд) и создать лист с именем sSheetName.
Если код находит sSheetName первый раз, то все хорошо. Он создает лист с "sSheetName_old". Однако если "sSheetName_old" уже есть, он не переименовывает "sSheetName" в "sSheetName_old2", а просто создает новые лист без изменения названий уже существующих
Код |
---|
Sub test() Dim sSheetName As String Dim a As Integer sSheetName = ThisWorkbook.Sheets("Main").Cells(2, 20).Value 'T2 If sSheetName = "" Then Exit Sub On Error Resume Next For i2 = 1 To Worksheets.Count If InStr(Worksheets(i2).Name, sSheetName) > 0 Then Worksheets(i2).Name = sSheetName & "_old" End If Next i2 If sSheetName & "_old" = "" Then Exit Sub On Error Resume Next For i3 = 1 To Worksheets.Count If InStr(Worksheets(i3).Name, sSheetName & "_old") > 0 Then Worksheets(i3).Name = sSheetName & "_old" & Worksheets(sSheetName & "_old").Count End If Next i3 Worksheets.Add.Name = sSheetName Sheets(sSheetName).Move After:=ThisWorkbook.Sheets("DealList") End Sub |