Set WB = Workbooks.Open(SFlRep) ..... WB.Sheets(SNmList).Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) Set WS = ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) MsgBox WS.CodeName 'ThisWorkbook.VBProject.VBComponents(WS.CodeName).Name = "First" & Num & "End" WS.Name = Date WS.EnableSelection = xlUnlockedCells MsgBox WS.CodeName Set WS = Nothing
[/vba]
Подскажите почему сообщения показываются пустые? Соответственно если убрать комментарий, то вылетает ошибка.... И почему вообще после перемещения листа кодовое имя меняется?
[vba]
Код
Set WB = Workbooks.Open(SFlRep) ..... WB.Sheets(SNmList).Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) Set WS = ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) MsgBox WS.CodeName 'ThisWorkbook.VBProject.VBComponents(WS.CodeName).Name = "First" & Num & "End" WS.Name = Date WS.EnableSelection = xlUnlockedCells MsgBox WS.CodeName Set WS = Nothing
[/vba]
Подскажите почему сообщения показываются пустые? Соответственно если убрать комментарий, то вылетает ошибка.... И почему вообще после перемещения листа кодовое имя меняется?Анатолий
И мне непонятно. Почему правила форума не соблюдаете? А опыт показал - сообщения показываются не пустые! И имя листа у меня естественно меняется - не могут быть в книге два листа с одинаковым именем!
И мне непонятно. Почему правила форума не соблюдаете? А опыт показал - сообщения показываются не пустые! И имя листа у меня естественно меняется - не могут быть в книге два листа с одинаковым именем!Hugo
И все-таки из-за чего CodeName может быть пустым в данном случае? Может быть кто-то уже сталкивался с таким поведением кода.... Не могу я книгу выложить.... код VBA из книги могу практически весь.... а вот книгу не могу
И все-таки из-за чего CodeName может быть пустым в данном случае? Может быть кто-то уже сталкивался с таким поведением кода.... Не могу я книгу выложить.... код VBA из книги могу практически весь.... а вот книгу не могу Анатолий
Я думаю что если сделаете пустой пример файла, который воспроизводит проблему - мы разберёмся в проблеме. Если не получится такой пример сделать - значит разберётесь в процессе сами
Я думаю что если сделаете пустой пример файла, который воспроизводит проблему - мы разберёмся в проблеме. Если не получится такой пример сделать - значит разберётесь в процессе сами Hugo
при первом открытии файла сразу закройте его вылезет сообщение - "ОК" затем ошибка нажмите Дебаг - затем нажмите продолжение выполнения (Run Macro F5) после закрытия. Снова откройте этот файл И вот тут в процедуре MoveListRep будет косяк с CodeName.
Так же данный косяк и при первом запуске появляется, когда нужно нажать дебаг, но это в другом месте кода в процедуре CreateStatList.
при первом открытии файла сразу закройте его вылезет сообщение - "ОК" затем ошибка нажмите Дебаг - затем нажмите продолжение выполнения (Run Macro F5) после закрытия. Снова откройте этот файл И вот тут в процедуре MoveListRep будет косяк с CodeName.
Так же данный косяк и при первом запуске появляется, когда нужно нажать дебаг, но это в другом месте кода в процедуре CreateStatList.Анатолий
Так же данный косяк и при первом запуске появляется, когда нужно нажать дебаг, но это в другом месте кода в процедуре CreateStatList. Но при дальнейшем выполнении кода (после нажатия F5) этот косяк пропадает в этом месте.... С чем связано - не пойму.
Прошу прощение за безобразие в коде. Я только разбираться начал в VBA.... Да еще отлавливаю этот глюк....
Так же данный косяк и при первом запуске появляется, когда нужно нажать дебаг, но это в другом месте кода в процедуре CreateStatList. Но при дальнейшем выполнении кода (после нажатия F5) этот косяк пропадает в этом месте.... С чем связано - не пойму.
Прошу прощение за безобразие в коде. Я только разбираться начал в VBA.... Да еще отлавливаю этот глюк....Анатолий
Да что ж мне как не везет на этом форуме Здесь гостей не любят что ли?( Я так понял сыр-бор из-за ссылки? Но как сюда добавить файл не регистрируясь?
Да что ж мне как не везет на этом форуме Здесь гостей не любят что ли?( Я так понял сыр-бор из-за ссылки? Но как сюда добавить файл не регистрируясь?Анатолий
[vba][code] WB.Sheets(SNmList).Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) Set WS = ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) 'For I = 1 To ThisWorkbook.VBProject.VBComponents.Count 'MsgBox ThisWorkbook.VBProject.VBComponents(I).Name 'Next MsgBox WS.CodeName[/code][/vba] Вот интересно получается, если убрать комментарий, то показывается имя и в цикле и после цикла строкой MsgBox WS.CodeName. Но если за комментировать цикл for то строка MsgBox WS.CodeName выдает пустое сообщение. Как такое может быть? И как это решается?
[vba][code] WB.Sheets(SNmList).Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) Set WS = ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) 'For I = 1 To ThisWorkbook.VBProject.VBComponents.Count 'MsgBox ThisWorkbook.VBProject.VBComponents(I).Name 'Next MsgBox WS.CodeName[/code][/vba] Вот интересно получается, если убрать комментарий, то показывается имя и в цикле и после цикла строкой MsgBox WS.CodeName. Но если за комментировать цикл for то строка MsgBox WS.CodeName выдает пустое сообщение. Как такое может быть? И как это решается?Анатолий
Я всёж из любопытства файл скачал - на архив пароль годится, на лист нет. Что увидел - кучу довольно непрозрачного кода, в котором разбираться без возможности запустить желания нет. Как и ломать пароль...
Может просто файл глючит?
Я всёж из любопытства файл скачал - на архив пароль годится, на лист нет. Что увидел - кучу довольно непрозрачного кода, в котором разбираться без возможности запустить желания нет. Как и ломать пароль...
[quote=Hugo,]на архив пароль годится, на лист нет.[/quote] На лист пароль в коде константой вбит
[quote=Hugo,]то увидел - кучу довольно непрозрачного кода, в котором разбираться без возможности запустить желания нет[/quote] Еще одна причина по которой не хотелось выкладывать файл книги целиком. Понимаю, что разобраться в коде мало кто будет...
[quote=Hugo,]Может просто файл глючит?[/quote] Файл пятьсот раз переписывался... Как вариант решения проблемы (надеюсь временно) нашел такой: [vba][code] WB.Sheets(SNmList).Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) Set WS = ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) For I = 1 To ThisWorkbook.VBProject.VBComponents.Count: Next '<<<<<<<<<<<<<<<< ThisWorkbook.VBProject.VBComponents(WS.CodeName).Name = "Day" & DayStr & "List" WS.Protect Password:=PassRep, UserInterfaceOnly:=True WS.Name = DateStrD WS.EnableSelection = xlUnlockedCells Set WS = Nothing[/code][/vba] Понятно, что так не правильно, хотя в VBA может и нормально
[quote=Hugo,]на архив пароль годится, на лист нет.[/quote] На лист пароль в коде константой вбит
[quote=Hugo,]то увидел - кучу довольно непрозрачного кода, в котором разбираться без возможности запустить желания нет[/quote] Еще одна причина по которой не хотелось выкладывать файл книги целиком. Понимаю, что разобраться в коде мало кто будет...
[quote=Hugo,]Может просто файл глючит?[/quote] Файл пятьсот раз переписывался... Как вариант решения проблемы (надеюсь временно) нашел такой: [vba][code] WB.Sheets(SNmList).Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) Set WS = ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) For I = 1 To ThisWorkbook.VBProject.VBComponents.Count: Next '<<<<<<<<<<<<<<<< ThisWorkbook.VBProject.VBComponents(WS.CodeName).Name = "Day" & DayStr & "List" WS.Protect Password:=PassRep, UserInterfaceOnly:=True WS.Name = DateStrD WS.EnableSelection = xlUnlockedCells Set WS = Nothing[/code][/vba] Понятно, что так не правильно, хотя в VBA может и нормально Анатолий
Странно, я пароли ставлю только макросами.... специально отдельно пароль на лист не ставил..... скорее всего глюк. Сейчас скачаю файл с гугла и посмотрю...
Странно, я пароли ставлю только макросами.... специально отдельно пароль на лист не ставил..... скорее всего глюк. Сейчас скачаю файл с гугла и посмотрю...Анатолий
Только что загрузил с гугла-диска файл на другом компьютере (не на том на котором делал) все нормально.... пароли на всех листах те, что константой забиты.... Может Вы раскладку клавиатуры не переключили или еще чего...
И, да, забыл сказать, что в коде используется такая конструкция как: ThisWorkbook.VBProject.VBComponents(WS.CodeName).Name =
которая требует некоторых изменений в настройках безопасности экселя....
Только что загрузил с гугла-диска файл на другом компьютере (не на том на котором делал) все нормально.... пароли на всех листах те, что константой забиты.... Может Вы раскладку клавиатуры не переключили или еще чего...
И, да, забыл сказать, что в коде используется такая конструкция как: ThisWorkbook.VBProject.VBComponents(WS.CodeName).Name =
которая требует некоторых изменений в настройках безопасности экселя....Анатолий