В моей превосходной рабочей книге у меня есть 4 листа с именами вкладок:
Лист1
Sheet2
Sheet3
RandomName
CodeNames для
Лист1 Тест1А
Лист2 Тест2А
Лист3 Тест3А
RandomName is Sheet4
Я хочу, чтобы произошло следующее:
1) Скопируйте все листы, если название вкладки содержит "Лист"
2A) Переименуйте все имена вкладок для скопированных листов, чтобы Sheet1 стал ShA1,
копия Листа 2 становится ША2 и т. д.
2B) Также переименуйте все CodeNames для скопированных листов так, чтобы CodeName для
ShA1 становится CName1A, ShA2 становится CName2A и т. Д.
Пока мне удалось скопировать листы и переименовать имена вкладок. Но если я включу вторую задачу - переименовать CodeNames, я получу сообщение об ошибке:
ошибка времени выполнения 9: индекс ниже диапазона.
Что может быть не так?
Для "Изменение части CodeName" VBAcode, который я пробовал с этим,
который генерирует ошибку:
ActiveWorkbook.VBProject.VBComponents(ActiveSheet.Name).Name = Replace(ActiveSheet.Name, "?", "?")
"?" = Я пробовал здесь другое дело
Когда я проверил вышеуказанный код VBA для CodeName, я поместил его после «части sh.copy» кода (см. Код ниже).
Вот код, который работает для переименования имен вкладок (задача переименования CodeNames не включена):
Sub FindSheets_and_replace_ShName()
Const csSheet As String = "Sheet"
Dim sh As Worksheet
For Each sh In ActiveWorkbook.Sheets
If InStr(1, sh.Name, csSheet) <> 0 Then
sh.copy After:=Sheets(Sheets.Count)
'ActiveWorkbook.VBProject.VBComponents(ActiveSheet.Name).Name = Replace(ActiveSheet.Name, "?", "?")
ActiveSheet.Name = Replace(sh.Name, "eet", "A")
End If
Next sh
End Sub