Как при создании нового рабочего листа синхронизировать имена этого листа — Visual Basic(Бейсик)

Private Sub Add_And_SynchronizeName()
    iNewName$ = "Archive" 'укажите своё имя листа
    With ThisWorkbook
         If Not .ProtectStructure Then
            .Worksheets.Add.Name = iNewName$
            With .VBProject.VBComponents
                 .Item(.Count).Name = iNewName$
            End With
         Else
            MsgBox "В рабочей книге : " & .Name & vbCrLf & _
            "невозможно создание нового листа", vbCritical, ""
         End If
    End With
End Sub
code: #vba
Private Sub Add_And_SynchronizeName2()
    iNewName$ = "Archive2" 'укажите своё имя листа
    With ThisWorkbook
         If Not .ProtectStructure Then
            Dim iWorksheet As Worksheet
            Set iWorksheet = .Worksheets.Add
            iWorksheet.Name = iNewName$
 
            Dim iVBComponents As Object
            Set iVBComponents = .VBProject.VBComponents
            iVBComponents(iWorksheet.CodeName).Name = iNewName$
         Else
            MsgBox "В рабочей книге : " & .Name & vbCrLf & _
            "невозможно создание нового листа", vbCritical, ""
         End If
    End With
End Sub 
Для создания общего имени необходимо учитывать особенности каждого имени, т.к. у каждого имени существуют свои ограничения:

Имя (Name):

Имя нового рабочего листа не должно совпадать с именами уже имеющихся листов (Sheets)
Имя листа не должно содержать более 31 символа.
Имя листа не должно содержать следующих символов / \ ? : *
кроме того, существует ограничение на порядок ввода [ ]
Кодовое (программное) имя (CodeName):

Кодовое имя нового рабочего листа не должно совпадать с кодовыми именами уже имеющихся рабочих листов и листов диаграмм (Worksheets & Charts)
Кодовое имя рабочего листа не должно содержать более 31 символа.
Первый символ в имени должен быть только буквой (кодовое имя не может начинаться с числовых значений или символа подчёркивания)
Кодовое имя может содержать только буквы, числовые значения и символ подчёркивания (и не может содержать только числа и/или символ подчёркивания см. пункт 3)

Leave a Comment