Вставьте некоторый код VBA через VBA на каждый вновь созданный лист

#excel #vba

#преуспеть #vba

Вопрос:

У меня есть простой код, который создает новый лист в форме шаблона после его запуска. Поступая таким образом, я получаю новый лист со всем, что мне нужно в моем шаблоне.

Мне также нужно скопировать короткий VBA-скрипт Worksheet_Change в эти вновь созданные листы. Например, код для получения идентификатора пользователя Windows и даты из системы после внесения изменений в ячейки в столбце B.

Как я могу поместить этот скрипт Worksheet_Change в свой код vba для каждого нового листа, созданного с помощью VBA?

Комментарии:

1. Почему бы не использовать Sub Workbook_SheetChange и ограничить, какие листы используют этот код if sheetName like "something*" then ? таким образом, код находится только в одном месте. (если есть необходимость ограничить его, или вы хотите, чтобы он выполнялся на ВСЕХ листах?)

2. Все имена листов генерируются по этому критерию: 2 буквы x; XX — тип шаблона; YYY — порядковый номер для типа шаблона. Итак, это выглядит так: CP01001; CP01002 или для другого шаблона типа CP02001. Как я должен охватить все имена? У меня есть 12 разных шаблонов, и в будущем их может быть еще больше

3. Как я уже сказал, если этот код будет выполняться на всех листах, просто добавьте его в workbook sheetchange, и он будет называться любым листом, на котором есть изменения.

4. Если под созданием нового листа в форме шаблона вы подразумеваете, что у вас есть лист, который вы копируете для создания нового листа, добавьте необходимый код в этот лист шаблона

Ответ №1:

Как сказал Андреас, используйте workbook sheetchange, и в нем вы можете написать функцию, которая добавляет идентификатор пользователя и дату в sheetname.ячейки (r, c) — где угодно — как ‘sheetname’ передается при вызове события workbook_sheetchange