ActiveX
Вы можете скопировать элемент управления ActiveX из одного листа к другому с ниже кодом.
Примечание: у вас не может быть два объекта с одним и тем же именем на одной электронной таблице.
Sub CopyActiveX()
Application.ScreenUpdating = False
Dim x As OLEObject, y As OLEObject
Set x = Sheets("SRC").OLEObjects("HasCustomName")
Set y = x.Duplicate
Dim xName As String
xName = x.Name
y.Cut
With Sheets("TRGT")
.Paste
.OLEObjects(.OLEObjects.Count).Name = xName
.Activate
End With
Application.ScreenUpdating = True
End Sub
Форма управления
Чтобы скопировать кнопку из одного листа к другому предотвращения автоматического изменения названия используйте код ниже. Excel по умолчанию дает новое имя скопированной кнопке (даже на другом листе), поэтому вам нужно переименовать его в соответствии с именем кнопки, которую вы копируете.
Используйте для этого CopyButton()
. Есть 4 Требуемые параметры
from
- имя листа, чтобы скопировать кнопку из
btnName
- имя элемента управления, который требуется скопировать
toWorksheet
- целевая таблица
rng
- целевой диапазон для связи с помощью кнопки
Sub CopyPasteButton()
CopyButton "SRC", "Button 1", "TRGT", "B10"
End Sub
Private Sub CopyButton(from As String, btnName As String, toWorksheet As String, rng As String)
Application.ScreenUpdating = False
Sheets(from).Shapes(btnName).Copy
Sheets(toWorksheet).Activate
Sheets(toWorksheet).range(rng).Select
Sheets(toWorksheet).Paste
Selection.ShapeRange.Name = btnName
Application.ScreenUpdating = True
End Sub
Спасибо! Я изменился на:.... Sheets ("SRC") Формы ("hasACustomName") Копирование Sheets ("многоцел") Range ("О1") Выберите Sheets ("многоцел") Вставить – user1283776
Неа. , после тестирования я вижу, что это также изменяет имя CommandButton. Заголовок не изменяется как с оригинальным решением, так и с вашим решением. Но имя меняется с обоими решениями – user1283776
@ user1283776 ok, я обновил свой ответ. Он копирует кнопку и переименовывает ее. У меня есть debug.printed имя до и после, чтобы подтвердить те же –