Программное удаление элементов управления ActiveX с рабочего листа при помощи кода VBA Excel. Метод Delete объекта OLEobject — синтаксис, примеры.
Метод Delete объекта OLEobject
Синтаксис метода Delete объекта OLEobject:
1 |
Workbooks("BookName").Worksheets("SheetName").OLEobjects("OLEobjectName").Delete |
- BookName – имя рабочей книги вместе с расширением, книга должна быть открыта.
- SheetName – имя рабочего листа, которое отображается на ярлычке.
- OLEobjectName – имя элемента управления ActiveX.
Чтобы узнать имя элемента управления ActiveX, необходимо при включенном режиме конструктора кликнуть левой кнопкой мыши по элементу. В адресной строке отобразится имя, которое можно скопировать в буфер обмена.
На изображении в строке формул вы видите текст: =ВНЕДРИТЬ("Forms.ComboBox.1";"")
. Если вы случайно кликните по нему, выйти из строки формул можно будет только нажав клавишу «Esc».
Удаление одного элемента ActiveX
Удаление элемента управления ActiveX с рабочего листа книги, в которой размещен код:
1 2 3 |
ThisWorkbook.Worksheets("Лист1").OLEobjects("CommandButton1").Delete Worksheets("Лист1").OLEobjects("TextBox2").Delete ActiveSheet.OLEobjects("OptionButton1").Delete |
Удаление элемента управления ActiveX с рабочего листа другой открытой книги:
1 |
Workbooks("Реестры.xls").Worksheets("Приказы").OLEobjects("ComboBox2").Delete |
Удаление всех элементов ActiveX
Удаление всех элементов управления ActiveX всех типов:
1 2 3 4 5 6 |
Sub Primer_1() Dim myOLEobject As OLEobject For Each myOLEobject In ActiveSheet.OLEobjects myOLEobject.Delete Next End Sub |
Этот код удалит все имеющиеся на листе элементы ActiveX.
Удаление всех однотипных элементов управления ActiveX:
1 2 3 4 5 6 |
Sub Primer_2() Dim myOLEobject As OLEobject For Each myOLEobject In ThisWorkbook.ActiveSheet.OLEobjects If myOLEobject.Name Like "ComboBox*" Then myOLEobject.Delete Next End Sub |
Этот код удалит все имеющиеся на листе элементы, в наименование которых входит подстрока «ComboBox». В данном случае будут удалены все поля со списком.
Точно также можно удалить и другие типы элементов управления ActiveX, заменив аргумент оператора Like «ComboBox*» на часть имени другого типа элементов с символом звездочки. Например: «CommandButton*», «Label*», «OptionButton*» и т.д.
Смотрите как удалить элементы управления формы с рабочего листа.
«На изображении в строке формул вы видите текст:
=ВНЕДРИТЬ("Forms.ComboBox.1";""
). Ни в коем случае не кликайте по нему мышью. Если курсор попадет в строку формул, выйти из нее вы уже не сможете.»Решил проверить
Вставил флажок, кликнул по формуле
Мышью больше нигде кликнуть не получается, но никто не отменял Esc. всё прекрасно снимается
Спасибо, Александр, за уточнение!
Здравствуйте! На листе есть кнопка ActiveX и при копировании, перемещении листа макросом или без, кнопка тоже копируется.
Можно ли, чтоб кнопка не копировалась. В свойствах поставил чтоб не печатался, но на копирование не влияет. Спасибо
Здравствуйте, Ислам!
Добавьте на копируемый лист еще одну кнопку для копирования этого листа, в примере — это кнопка CommandButton2:
В копии листа все кнопки ActiveX будут удалены.
Спасибо, Евгений!
Обсуждение закрыто.