События VBA для листов, которые создаются макросами - PullRequest
0 голосов
/ 10 апреля 2019

Я относительно новичок в VBA. Вот что мне нужно сделать:

Мне нужен код для запуска, когда значение некоторых ячеек изменяется на некоторых листах. Я только что узнал, как это сделать, используя события. У меня проблема в том, что рабочие листы, которым нужно событие, не для начала, а генерируются макросом. Кроме того, их число может варьироваться в зависимости от данных (т. Е. Иногда макрос может генерировать 3, иногда 10 ... и будет переименовывать их, используя некоторые значения ячеек, поэтому имена также будут отличаться каждый раз).

Из того, что я вижу, событие, которое запускает макрос при изменении ячейки, должно быть закодировано для самого объекта (конкретные рабочие листы). Есть ли способ сделать это для листов, которые генерируются макросами и не существуют в книге при первом открытии?

Любая помощь будет высоко ценится!

1 Ответ

1 голос
/ 10 апреля 2019

Крошечный трюк:

Обычный способ добавить лист - использовать код вроде:

Sheets.Add

, который даст вам новый новый лист, но с этим новым листом не будет связан код события.

Вместо этого создайте шаблон листа (называемый templ) и в этот шаблон листа включите все необходимые макросы событий. Теперь вместо Add нового листа просто:

Sheets("templ").Copy after:=Sheets(Sheets.Count)

вы получите новый лист, но со всеми прикрепленными макросами!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...