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

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

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

Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

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

Ваш комментарий будет опубликован после прохождения обязательной модерации. Исходящие ссылки не допускаются. Время модерации составит от нескольких минут до нескольких часов в зависимости от времени суток и занятости модератора. При добавлении в комментарий кода VBA Excel, вставьте перед его началом тег [vb] и по окончании кода - [/vb].