Как вставить макросы на другие листы, используя VBA - PullRequest
0 голосов
/ 03 октября 2019

Я хочу иметь возможность скопировать макросы, назначенные объекту, на другой лист, используя VBA.

Следующий код копирует и вставляет форматы 1 листа на другой, но не макросы на листе.

        WshTrg.Cells.PasteSpecial xlPasteFormats
        WshTrg.Cells.PasteSpecial xlPasteColumnWidths
        WshTrg.Cells.PasteSpecial xlPasteFormulasAndNumberFormats
        WshTrg.Cells.PasteSpecial xlPasteAll

есть ли способ вставлять объекты вместо форматов с одного листа на другой

Ответы [ 2 ]

0 голосов
/ 03 октября 2019

Если мы говорим о формах , назначенных макросу через их свойство OnAction, то вам не нужно копировать макрос.

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

Похоже, формы прикрепляются к макросам, реализованным в коде кода листа.

Добавьте новый стандартный модуль в свой проект и переместите (вырезайте и вставляйте) код там. Следите за любыми неявными ссылками ActiveSheet в этом коде, потому что Range("A1") делает в коде позади Worksheet модуля Me.Range("A1"), но в стандартном модуле ActiveSheet.Range("A1") (то же самоес неквалифицированными Cells, Names, Columns, Rows, ...): четко указывайте, с каким листом вы работаете, и все будет хорошо.

Теперь заново свяжитеваши фигуры с макросом в стандартном модуле (то есть Sheet1!MyMacro становится MyMacro), и теперь вам не нужно переносить код вместе с копируемыми фигурами.

0 голосов
/ 03 октября 2019

Да. Ваш вопрос тонок в деталях, так что это довольно схематично, но вы поняли.

Любой макрос, прикрепленный к фигуре, будет скопирован.

Sub x()

Sheet1.Shapes(1).Copy
Sheet2.Paste

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