Добрый день. Искал в интернете и на форуме подобного не нашел , или плохо искал( Надеюсь это не так) Есть макрос который если не находит листа с именем из ячейки, копирует другой лист и назначает ему имя из этой самой ячейки. Скажите пожалуйста как возможно работать с этим листом чтобы каждый раз не задавать переменные для ново созданных листов? Пробую так [vba]
Код
В модуле обьявил Public sahe As Worksheet Public hase As Variant 'В Книге hase = Workbooks("MFO_Scenariy.xlsm").Worksheets("basic_process").Range("A6").Value Set sahe = Workbooks("Resultati_testov_mfo.xlsm").Worksheets(hase)
[/vba] Но есть несколько проблем. 1) как я понял переменная задается только один раз когда я открываю документ ( Событие workbook open) И из-за этого если ячейки на момент открытия пустая то ошибка соответственно 2) Даже изменив значение в ячейке с именем листа, в переменной оно не меняется и работа макросов продолжается с тем листом который был в переменной на момент открытия документа Как сделать так чтобы при открытии не ругалось я так понимаю просто поставить создание листа на допустим изменение в ячейке, а как назначить переменную так чтобы она тоже менялась и в макросах в т.ч. Тоесть если я изменил значение ячейки скопировался лист имя присвоилось с ячейки и другие макросы уже могли работать с новосозданным листом?
Извиняюсь не в том разделе создал тему(( Перенести может только модератор да?
Добрый день. Искал в интернете и на форуме подобного не нашел , или плохо искал( Надеюсь это не так) Есть макрос который если не находит листа с именем из ячейки, копирует другой лист и назначает ему имя из этой самой ячейки. Скажите пожалуйста как возможно работать с этим листом чтобы каждый раз не задавать переменные для ново созданных листов? Пробую так [vba]
Код
В модуле обьявил Public sahe As Worksheet Public hase As Variant 'В Книге hase = Workbooks("MFO_Scenariy.xlsm").Worksheets("basic_process").Range("A6").Value Set sahe = Workbooks("Resultati_testov_mfo.xlsm").Worksheets(hase)
[/vba] Но есть несколько проблем. 1) как я понял переменная задается только один раз когда я открываю документ ( Событие workbook open) И из-за этого если ячейки на момент открытия пустая то ошибка соответственно 2) Даже изменив значение в ячейке с именем листа, в переменной оно не меняется и работа макросов продолжается с тем листом который был в переменной на момент открытия документа Как сделать так чтобы при открытии не ругалось я так понимаю просто поставить создание листа на допустим изменение в ячейке, а как назначить переменную так чтобы она тоже менялась и в макросах в т.ч. Тоесть если я изменил значение ячейки скопировался лист имя присвоилось с ячейки и другие макросы уже могли работать с новосозданным листом?
Извиняюсь не в том разделе создал тему(( Перенести может только модератор да?Amon
Вынес присвоение переменным в отдельный макрос, который запускается и при открытии книги, и при изменении данных на листе Возможно, Вы этого хотели.
Вынес присвоение переменным в отдельный макрос, который запускается и при открытии книги, и при изменении данных на листе Возможно, Вы этого хотели._Boroda_
_Boroda_, Да, так стало намного лучше. Только единственная проблема которая осталась это когда лист не существует который вписан в а6 то ругается. Можно это как-то изменить? Просто по идее эта ячейка при выходе вообще должна очищаться.
[p.s.]Разобрался. ) Тему можно закрывать. Просто при выходе ячейке назначается имя шаблона для копирования и при открытии не ругается. Спасибо вам огромное за помощь.
_Boroda_, Да, так стало намного лучше. Только единственная проблема которая осталась это когда лист не существует который вписан в а6 то ругается. Можно это как-то изменить? Просто по идее эта ячейка при выходе вообще должна очищаться.
[p.s.]Разобрался. ) Тему можно закрывать. Просто при выходе ячейке назначается имя шаблона для копирования и при открытии не ругается. Спасибо вам огромное за помощь.Amon
Сообщение отредактировал Amon - Понедельник, 04.06.2018, 16:06