Программное удаление элементов управления ActiveX с рабочего листа при помощи кода VBA Excel. Метод Delete объекта OLEobject – синтаксис, примеры.
Метод Delete объекта OLEobject
Синтаксис метода Delete объекта OLEobject:
Workbooks("BookName").Worksheets("SheetName").OLEobjects("OLEobjectName").Delete
- BookName – имя рабочей книги вместе с расширением, книга должна быть открыта.
- SheetName – имя рабочего листа, которое отображается на ярлычке.
- OLEobjectName – имя элемента управления ActiveX.
Чтобы узнать имя элемента управления ActiveX, необходимо при включенном режиме конструктора кликнуть левой кнопкой мыши по элементу. В адресной строке отобразится имя, которое можно скопировать в буфер обмена.
На изображении в строке формул вы видите текст: =ВНЕДРИТЬ("Forms.ComboBox.1";"")
. Ни в коем случае не кликайте по нему мышью. Если курсор попадет в строку формул, выйти из нее вы уже не сможете.
Если такая беда все-таки приключилась, нажмите сочетание клавиш Ctrl+Alt+Delete, а затем кнопку «Диспетчер задач». В диспетчере задач Windows на вкладке «Процессы» выберите экземпляр программы Microsoft Excel с зависшей книгой и нажмите кнопку «Снять задачу». Зависшая книга будет закрыта, несохраненные данные утеряны.
Удаление одного элемента ActiveX
Удаление элемента управления ActiveX с рабочего листа книги, в которой размещен код:
ThisWorkbook.Worksheets("Лист1").OLEobjects("CommandButton1").Delete
Worksheets("Лист1").OLEobjects("TextBox2").Delete
ActiveSheet.OLEobjects("OptionButton1").Delete
Удаление элемента управления ActiveX с рабочего листа другой открытой книги:
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*» и т.д.
Смотрите как удалить элементы управления формы с рабочего листа.