Перейти к содержимому

VBA Excel. Удаление элементов ActiveX с рабочего листа

Программное удаление элементов управления ActiveX с рабочего листа при помощи кода VBA Excel. Метод Delete объекта OLEobject - синтаксис, примеры.

  1. Метод Delete объекта OLEobject
  2. Удаление одного элемента ActiveX
  3. Удаление всех элементов ActiveX

Метод Delete объекта OLEobject

Синтаксис метода Delete объекта OLEobject:

Workbooks("BookName").Worksheets("SheetName").OLEobjects("OLEobjectName").Delete

  • BookName – имя рабочей книги вместе с расширением, книга должна быть открыта.
  • SheetName – имя рабочего листа, которое отображается на ярлычке.
  • OLEobjectName – имя элемента управления ActiveX.

Чтобы узнать имя элемента управления ActiveX, необходимо при включенном режиме конструктора кликнуть левой кнопкой мыши по элементу. В адресной строке отобразится имя, которое можно скопировать в буфер обмена.

Имя элемента ActiveX в адресной строке
Имя элемента ActiveX в адресной строке

На изображении в строке формул вы видите текст: =ВНЕДРИТЬ("Forms.ComboBox.1";""). Ни в коем случае не кликайте по нему мышью. Если курсор попадет в строку формул, выйти из нее вы уже не сможете.

Если такая беда все-таки приключилась, нажмите сочетание клавиш Ctrl+Alt+Delete, а затем кнопку «Диспетчер задач». В диспетчере задач Windows на вкладке «Процессы» выберите экземпляр программы Microsoft Excel с зависшей книгой и нажмите кнопку «Снять задачу». Зависшая книга будет закрыта, несохраненные данные утеряны.

Окно диспетчера задач Windows
Окно диспетчера задач Windows

Удаление одного элемента 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 всех типов:

Sub Primer_1()
Dim myOLEobject As OLEobject
  For Each myOLEobject In ActiveSheet.OLEobjects
    myOLEobject.Delete
  Next
End Sub

Этот код удалит все имеющиеся на листе элементы ActiveX.

Удаление всех однотипных элементов управления ActiveX:

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*» и т.д.

Смотрите как удалить элементы управления формы с рабочего листа.

Добавить комментарий

Ваш комментарий будет опубликован после прохождения обязательной модерации. Исходящие ссылки не допускаются. Время модерации составит от нескольких минут до нескольких часов в зависимости от времени суток и занятости модератора.