. У меня есть немного кода, где, когда я нажимаю кнопку, он вызывает подраздел, который добавит новый лист в книгу, а затем изменит кодовое имя лист, чтобы упростить обращение к нему в моем коде. Это выглядит следующим образом:Изменение кодового имени VBA. Ошибка во время выполнения. 9: Подстрочный код за пределами диапазона.
Dim wbk As Workbook
Dim wks As Worksheet
Set wbk = ThisWorkbook
wbk.Sheets.Add.Name = "Admin - Save Log"
Set wks = wbk.Worksheets("Admin - Save Log")
wks.Parent.VBProject.VBComponents(wks.CodeName).Name = "wksAdminSaveLog"
Это похоже на работу - ОДНАКО - только тогда, когда у меня есть окно «Developer» открытого или ранее был его открытым.
Если я нажму кнопку, когда я впервые открою документ Excel (не открыв окно «Разработчик»), то он добавляет лист, однако появляется следующая ошибка и не изменяет кодовое имя листа:
ошибка времени выполнения «9»: Подстрочная из диапазона
только тогда, когда я нажимаю Debug, а затем запустить код после того, как окно «Developer» вновь открыто, что он добавляет позывной.
Есть ли способ обойти это, чтобы пользователю не нужно открывать окно разработчика, чтобы он работал правильно?
Благодаря
Вы должны «Установить wks = wbk.Sheets.Add', *, а затем * установить его' .Name'. Таким образом, вам не нужно будет иметь строковый литерал, прописанный дважды. –
Вы можете попробовать «DoEvents» или два. Однако, если вы можете, было бы безопаснее использовать вызов «Application.Ontime» для запуска кода для изменения кодового имени (и всего остального). – Rory
Как раз пояснить, является ли ошибка времени выполнения 9 поднятой на 'wks.Parent.VBProject.VBComponents (wks.CodeName)' доступ? –