Программное удаление элементов управления формы с рабочего листа при помощи кода 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.)
asked Feb 15, 2016 at 12:25
1
See the code below:
Sub DeleteAllShapes()
ActiveSheet.Shapes.SelectAll
Selection.Delete
End Sub
answered Aug 28, 2019 at 13:08
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
elano7elano7
1,3161 gold badge16 silver badges16 bronze badges
There’s an easier method that doesn’t use VB:
- Click the Developer tab
- Click Design Mode
- Click on any button in the worksheet
- Press Ctrl + A to select all buttons in the worksheet
- Press Delete
answered Oct 16, 2017 at 19:01
1
aws1967 Пользователь Сообщений: 32 |
Здравствуйте все. |
Слэн Пользователь Сообщений: 5192 |
а по надписи на ней? или alternativetext.. |
ber$erk Пользователь Сообщений: 2735 |
#3 18.07.2013 15:17:42
Учимся сами и помогаем другим… |
||
aws1967 Пользователь Сообщений: 32 |
#4 18.07.2013 15:25:38 Это работает, только у меня есть на листе и нужные кнопки… В итоге удалились все, но за идею спасибо. Попробую исключить нужные и удалить оставшиеся. Хотя конечно правильнее бы знать имя конкретного объекта…
По надписи не идентифицируется. |
||
Слэн Пользователь Сообщений: 5192 |
#5 18.07.2013 15:33:25
почему? что все кнопки с одинаковыми надписями? как же вы ими пользуетесь? Живи и дай жить.. |
||
aws1967 Пользователь Сообщений: 32 |
По тексту, который виден на кнопке программа ее не находит. В системе она хранится как «Button N», и где это переназначить я найти не могу. В интерфейсе я могу только переназначить макрос и изменить текст… |
ber$erk Пользователь Сообщений: 2735 |
#7 18.07.2013 15:40:12 Согласен со Слэном: на копируемом листе зайдите в свойства кнопки и укажите в поле «Замещающий текст» что-нибудь типа «меткаДляУдаления». А в коде
Учимся сами и помогаем другим… |
||
Слэн Пользователь Сообщений: 5192 |
#8 18.07.2013 15:48:33 почему же..
Изменено: Слэн — 18.07.2013 15:49:44 Живи и дай жить.. |
||
aws1967 Пользователь Сообщений: 32 |
ber$erk, это понятно, только я не могу найти это свойство кнопки. На закладке Разработчик есть кнопка Свойства. По ней открываются свойства листа. Кнопок там нет. Выделение кнопки мышью тоже результата не дает. Значит что-то не так делаю… Что не так? |
ber$erk Пользователь Сообщений: 2735 |
ПКМ на кнопке — «формат объекта» Учимся сами и помогаем другим… |
aws1967 Пользователь Сообщений: 32 |
Слэн, Ваш код у меня не заработал — не удаляет ничего. Наверное Вы пишите про Элементы ActiveX, а у меня вставлена кнопка из Элементы управления формы. |
aws1967 Пользователь Сообщений: 32 |
#12 18.07.2013 16:13:23
[CODE][/CODE]На закладке Свойства — только свойства привязки объекта к фону и печать, на закладке Веб — Замещающий текст и он совпадает с названием кнопки, которое программно не определяется. На закладках Шрифт, Выравнивание, Размер, Защита и Поля для данного случая ничего полезного нет. |
||
ber$erk Пользователь Сообщений: 2735 |
на закладке «Замещающий текст» напишите «меткаДляУдаления». Скопируйте лист. На новом листе запустите мой код Учимся сами и помогаем другим… |
Igor67 Пользователь Сообщений: 3726 |
#14 18.07.2013 16:33:23 Проверил, все нормально для кнопок ФОРМЫ. Просто Слэн на коленке видно писал для примера и не провреил орфографию
|
||
aws1967 Пользователь Сообщений: 32 |
#15 18.07.2013 16:40:14
Все заработало. Большое спасибо. |
||
Ivanov Petr Пользователь Сообщений: 43 |
#16 19.07.2013 15:29:34 aws1967,, а не могли бы… Изменено: Ivanov Petr — 19.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.
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!
Read More… Free Download… Purchase…
Comments (1)
No ratings yet. Be the first to rate!