Vba excel как удалить кнопку с листа

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

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

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

Workbooks("BookName").Worksheets("SheetName").Shapes("ShapeName").Delete

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

Элементы управления формы имеют два имени: основное на английском языке и альтернативное на русском. Как ни странно, оба этих имени можно использовать в качестве ShapeName в выражении, удаляющем элемент управления с рабочего листа.

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

Альтернативное имя кнопки на русском языке

Альтернативное имя кнопки на русском языке

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

Основное имя кнопки на английском языке

Основное имя кнопки на английском языке

Точно так же определяются основные и альтернативные имена других элементов управления формы.

Удаление одного элемента управления

Удаление элемента управления формы с рабочего листа книги, в которой размещен код:

ThisWorkbook.Worksheets("Лист2").Shapes("Button 5").Delete

Worksheets("Лист4").Shapes("Перекл. 3").Delete

ActiveSheet.Shapes("Drop Down 2").Delete

Удаление элемента управления формы с рабочего листа другой открытой книги:

Workbooks("Чеки.xls").Worksheets("Чек №5").Shapes("Кнопка 2").Delete

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

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

Sub Primer_1()

Dim myShap As Shape

  For Each myShap In ActiveSheet.Shapes

    myShap.Delete

  Next

End Sub

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

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

Sub Primer_2()

Dim myShap As Shape

  For Each myShap In ThisWorkbook.ActiveSheet.Shapes

    If myShap.Name Like «Button*» Then myShap.Delete

  Next

End Sub

Этот код удалит все имеющиеся на листе элементы, в наименование которых входит подстрока «Button». В данном случае будут удалены все кнопки.

Точно также можно удалить и другие типы элементов управления формы, заменив аргумент оператора Like «Button*» на часть имени другого типа элементов с символом звездочки. Например: «Label*», «Drop Down*», «Check Box*» и т.д.

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

I’ve got a bit of code that creates a Save button on a worksheet (held in the wsReport variable), but it doesn’t remove previous buttons. Over time, they tend to build up. Is there any way to do something like this?

wsReport.Buttons.All.Delete

(Not right, obviously, but gives an idea of what I’m looking for.)

Martijn Pieters's user avatar

asked Feb 15, 2016 at 12:25

Andrew Perry's user avatar

1

See the code below:

Sub DeleteAllShapes() 

    ActiveSheet.Shapes.SelectAll

    Selection.Delete

End Sub

Shayki Abramczyk's user avatar

answered Aug 28, 2019 at 13:08

Info City's user avatar

If somebody found this question, but needs to delete only one button, this helped me:

ActiveSheet.Shapes("my_button_name").Delete

answered Jun 26, 2020 at 9:12

elano7's user avatar

elano7elano7

1,3161 gold badge16 silver badges16 bronze badges

There’s an easier method that doesn’t use VB:

  1. Click the Developer tab
  2. Click Design Mode
  3. Click on any button in the worksheet
  4. Press Ctrl + A to select all buttons in the worksheet
  5. Press Delete

answered Oct 16, 2017 at 19:01

thatguy's user avatar

1

 

aws1967

Пользователь

Сообщений: 32
Регистрация: 17.07.2013

Здравствуйте все.
На листе есть Кнопка (элемент управления формы) для запуска макроса. Я программно копирую часть этого листа на другой лист вместе с кнопкой, но на новом месте она не нужна.  По тексту-названию кнопки объект программно не находится. При записи макроса удаления, объект был назван «Button 93», но номер при каждом копировании меняется… Подскажите, пожалуйста, где можно найти ее имя или как посмотреть текущий номер этого объекта, чтобы можно было ей управлять.

 

Слэн

Пользователь

Сообщений: 5192
Регистрация: 16.01.2013

а по надписи на ней?

или alternativetext..

 

ber$erk

Пользователь

Сообщений: 2735
Регистрация: 25.12.2012

#3

18.07.2013 15:17:42

Код
For Each IShape In ActiveSheet.Shapes
    If IShape.Name Like "Button*" Then IShape.Delete
Next

Учимся сами и помогаем другим…

 

aws1967

Пользователь

Сообщений: 32
Регистрация: 17.07.2013

#4

18.07.2013 15:25:38

Это работает, только у меня есть на листе и нужные кнопки… В итоге удалились все, но за идею спасибо. Попробую исключить нужные и удалить оставшиеся. Хотя конечно правильнее бы знать имя конкретного объекта…

Цитата
Слэн пишет: а по надписи на ней?

По надписи не идентифицируется.

 

Слэн

Пользователь

Сообщений: 5192
Регистрация: 16.01.2013

#5

18.07.2013 15:33:25

Цитата
aws1967 пишет:
По надписи не идентифицируется.

почему? что все кнопки с одинаковыми надписями?

как же вы ими пользуетесь?

Живи и дай жить..

 

aws1967

Пользователь

Сообщений: 32
Регистрация: 17.07.2013

По тексту, который виден на кнопке программа ее не находит. В системе она хранится как «Button N», и где это переназначить я найти не могу. В интерфейсе я могу только переназначить макрос и изменить текст…

 

ber$erk

Пользователь

Сообщений: 2735
Регистрация: 25.12.2012

#7

18.07.2013 15:40:12

Согласен со Слэном: на копируемом листе зайдите в свойства кнопки и укажите в поле «Замещающий текст» что-нибудь типа «меткаДляУдаления». А в коде

Код
For Each IShape In ActiveSheet.Shapes 
If IShape.AlternativeText = "меткаДляУдаления" Then IShape.Delete 
Next

Учимся сами и помогаем другим…

 

Слэн

Пользователь

Сообщений: 5192
Регистрация: 16.01.2013

#8

18.07.2013 15:48:33

почему же..

Код
for each but in activesheet.shapes
   if but.name like "butt*" then
      if but.drawingobect.object.caption="ваша надпись" then but.delete
   endif
next but

Изменено: Слэн18.07.2013 15:49:44

Живи и дай жить..

 

aws1967

Пользователь

Сообщений: 32
Регистрация: 17.07.2013

ber$erk, это понятно, только я не могу найти это свойство кнопки. На закладке Разработчик есть кнопка Свойства. По ней открываются свойства листа. Кнопок там нет. Выделение кнопки мышью тоже результата не дает. Значит что-то не так делаю… Что не так?

 

ber$erk

Пользователь

Сообщений: 2735
Регистрация: 25.12.2012

ПКМ на кнопке — «формат объекта»

Учимся сами и помогаем другим…

 

aws1967

Пользователь

Сообщений: 32
Регистрация: 17.07.2013

Слэн, Ваш код у меня не заработал — не удаляет ничего. Наверное Вы пишите про Элементы ActiveX, а у меня вставлена кнопка из Элементы управления формы.

 

aws1967

Пользователь

Сообщений: 32
Регистрация: 17.07.2013

#12

18.07.2013 16:13:23

Цитата
ber$erk пишет: ПКМ на кнопке — «формат объекта»

[CODE][/CODE]На закладке Свойства — только свойства привязки объекта к фону и печать, на закладке Веб — Замещающий текст и он совпадает с названием кнопки, которое программно не определяется. На закладках Шрифт, Выравнивание, Размер, Защита и Поля для данного случая ничего полезного нет.
Может элементы управления формы так себя и должны вести? А более глубокие свойства доступны только в элементах ActiveX?

 

ber$erk

Пользователь

Сообщений: 2735
Регистрация: 25.12.2012

на закладке «Замещающий текст» напишите «меткаДляУдаления». Скопируйте лист. На новом листе запустите мой код

Учимся сами и помогаем другим…

 

Igor67

Пользователь

Сообщений: 3726
Регистрация: 21.12.2012

#14

18.07.2013 16:33:23

Проверил, все нормально для кнопок ФОРМЫ. Просто Слэн на коленке видно писал для примера и не провреил орфографию

Код
Sub delitKnopka()
Dim but As Object
For Each but In ActiveSheet.Shapes
   If but.Name Like "Button*" Then
      If but.DrawingObject.Caption = "Привет" Then but.Delete
   End If
Next but
End Sub
 

aws1967

Пользователь

Сообщений: 32
Регистрация: 17.07.2013

#15

18.07.2013 16:40:14

Цитата
на закладке «Замещающий текст» напишите «меткаДляУдаления». Скопируйте лист. На новом листе запустите мой код

Все заработало. Большое спасибо.

 

Ivanov Petr

Пользователь

Сообщений: 43
Регистрация: 01.01.1970

#16

19.07.2013 15:29:34

aws1967,, а не могли бы…
вопрос не по теме удален [МОДЕРАТОР].

Изменено: Ivanov Petr19.07.2013 16:47:04

Удалить все кнопки (елементы управления формой):[vba]

Код

Sub delAll()
ActiveSheet.Buttons.Delete
End Sub

[/vba]

Удалить все кнопки (активИкс):[vba]

Код

Sub dell()
For Each ob In ActiveSheet.OLEObjects
If ob.Name Like «CommandButton*» Then
ob.Delete
End If
Next
End Sub

[/vba]

Удалить по названию:
[vba]

Код

Sub del()
Dim i&, tx$
tx = InputBox(«Введите подпись кнопки для удаления»)
On Error Resume Next
       For i = 1 To ActiveSheet.OLEObjects.Count
           If ActiveSheet.OLEObjects.Item(i).Object.Caption = tx Then
               ActiveSheet.OLEObjects.Item(i).Delete
           End If
       Next
       For i = 1 To ActiveSheet.Buttons.Count
           If ActiveSheet.Buttons.Item(i).Caption = tx Then
               ActiveSheet.Buttons.Item(i).Delete
           End If
       Next
End Sub

[/vba]

В этой статье говорится об удалении всех кнопок управления формой или командных кнопок с активного листа в Excel.

Удалите все кнопки, включая кнопки управления формой и командные кнопки, выбрав их все
Удалите все кнопки, включая кнопки управления формой и командные кнопки, с помощью кода VBA
Удалите все кнопки управления формой или командные кнопки с кодом VBA


Удалите все кнопки, включая кнопки управления формой и командные кнопки, выбрав их все

Чтобы удалить все кнопки (включая кнопки управления формой и кнопки команд) с активного листа, сделайте следующее.

1. Включите режим дизайна, нажав Застройщик > Режим проектирования. Смотрите скриншот:

2. Выберите одну из командных кнопок и нажмите Ctrl + A клавиши для выбора всех кнопок на текущем листе.

3. нажмите Удалить для удаления всех выбранных кнопок.

Внимание: Если на этом листе есть другие объекты, они также будут выбраны.


Удалите все кнопки, включая кнопки управления формой и командные кнопки, с помощью кода VBA

Кроме того, вы можете применить ниже сценарий VBA, чтобы удалить все кнопки с текущего рабочего листа в Excel.

1. Откройте рабочий лист, содержащий кнопки, которые вы хотите удалить, а затем нажмите другой + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. в Microsoft Visual Basic для приложений окна, нажмите Вставить > Модули, затем скопируйте ниже код VBA в окно кода.

Код VBA: удалить все кнопки с активного листа

Sub Clear_ButtonsActiveSheet()
    Dim I As Long
    Dim xOLE As Object
    On Error Resume Next
    ActiveSheet.Buttons.Delete
    For Each xOLE In ActiveSheet.OLEObjects
        If TypeName(xOLE.Object) = "CommandButton" Then
            xOLE.Delete
        End If
    Next
End Sub

3. Press the F5 key to run the code. Then all buttons including form control buttons and command buttons are removed from current worksheet immediately.


Remove all form control buttons or command buttons with VBA code

If you only want to remove all form control buttons or all command buttons from active sheet. You can try the below VBA codes to achieve it.

1. Open the worksheet contains the buttons you want to remove, and then press the Alt + F11 keys to open the Microsoft Visual Basic for Applications window.

2. In the Microsoft Visual Basic for Applications window, click Insert > Module, then copy below VBA code into the Code window.

VBA code: Remove all form control buttons from active sheet

Sub Clear_ButtonsActiveSheet()
    ActiveSheet.Buttons.Delete
End Sub

VBA code: Remove all command buttons from active sheet

Sub Clear_ButtonsActiveSheet()
    Dim xOLE As Object
    On Error Resume Next
    For Each xOLE In ActiveSheet.OLEObjects
        If TypeName(xOLE.Object) = "CommandButton" Then
            xOLE.Delete
        End If
    Next
End Sub

3. Press the F5 key to run the code.

Then all form control buttons or all command buttons are removed from current worksheet immediately.


Related articles:

  • How to insert a blank new row automatically by Command Button in Excel?
  • How to use Command Button to save active worksheet as PDF file in Excel?
  • How to update or insert (current) date and time by a Command Button in Excel?
  • How to use a Command Button to change a specified cell value in Excel?

The Best Office Productivity Tools

Kutools for Excel Solves Most of Your Problems, and Increases Your Productivity by 80%

  • Reuse: Quickly insert complex formulas, charts and anything that you have used before; Encrypt Cells with password; Create Mailing List and send emails…
  • Super Formula Bar (easily edit multiple lines of text and formula); Reading Layout (easily read and edit large numbers of cells); Paste to Filtered Range
  • Merge Cells/Rows/Columns without losing Data; Split Cells Content; Combine Duplicate Rows/Columns… Prevent Duplicate Cells; Compare Ranges
  • Select Duplicate or Unique Rows; Select Blank Rows (all cells are empty); Super Find and Fuzzy Find in Many Workbooks; Random Select…
  • Exact Copy Multiple Cells without changing formula reference; Auto Create References to Multiple Sheets; Insert Bullets, Check Boxes and more…
  • Extract Text, Add Text, Remove by Position, Remove Space; Create and Print Paging Subtotals; Convert Between Cells Content and Comments
  • Super Filter (save and apply filter schemes to other sheets); Advanced Sort by month/week/day, frequency and more; Special Filter by bold, italic…
  • Combine Workbooks and WorkSheets; Merge Tables based on key columns; Split Data into Multiple Sheets; Batch Convert xls, xlsx and PDF
  • More than 300 powerful features. Supports Office / Excel 2007-2021 and 365. Supports all languages. Easy deploying in your enterprise or organization. Full features 30-day free trial. 60-day money back guarantee.

kte tab 201905

Read More… Free Download… Purchase… 


Office Tab Brings Tabbed interface to Office, and Make Your Work Much Easier

  • Enable tabbed editing and reading in Word, Excel, PowerPoint, Publisher, Access, Visio and Project.
  • Open and create multiple documents in new tabs of the same window, rather than in new windows.
  • Increases your productivity by 50%, and reduces hundreds of mouse clicks for you every day!

officetab bottom

Read More… Free Download… Purchase… 

Comments (1)


No ratings yet. Be the first to rate!

Like this post? Please share to your friends:
  • Vba excel как удалить выделенную строку
  • Vba excel как удалить userform
  • Vba excel как убрать пробелы в строке
  • Vba excel как найти пустые строки
  • Vba excel как найти пустую ячейку