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

Удалить все кнопки (елементы управления формой):[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!

  • #2

Code:

Sub Clear_Buttons()
Dim i As Integer
    If ActiveSheet.ProtectContents = True Then
        MsgBox "The Current Workbook or the Worksheets which it contains are protected." & vbLf & "                          Please resolve these issues and try again."
    End If
    
On Error Resume Next
    For i = 1 To 10000
        ActiveWorkbook.sheets(i).Buttons.Delete
    Next i

Test on a COPY of your workbook, but I think this is what you need. I’ve found that even with 10,000 loops, it runs pretty quick.

  • #3

Code:

Sub Clear_Buttons()
Dim i As Integer
    If ActiveSheet.ProtectContents = True Then
        MsgBox "The Current Workbook or the Worksheets which it contains are protected." & vbLf & "                          Please resolve these issues and try again."
    End If
 
On Error Resume Next
    For i = 1 To 10000
        ActiveWorkbook.sheets(i).Buttons.Delete
    Next i
End Sub

Test on a COPY of your workbook, but I think this is what you need. I’ve found that even with 10,000 loops, it runs pretty quick.

It just occured to me that you said on a SHEET, not in a whole workbook. If that’s the case, try this instead:

Code:

Sub Clear_Buttons()
Dim i As Integer
    If ActiveSheet.ProtectContents = True Then
        MsgBox "The Current Workbook or the Worksheets which it contains are protected." & vbLf & "                          Please resolve these issues and try again."
    End If
 
    On Error Resume Next
        ActiveSheet.Buttons.Delete
End Sub

Last edited: Jan 31, 2012

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