ich möchte gern alle vorhandenen Button löschen die sich in den Tabellen
befinden, es sind sehr viele.
Nur die Tabelle "k_Test" sollten die Button erhalten bleiben.
Alle Button sind Schaltflächen.
mfg Kurt aus K
Sub Objekt_TypeNummern()
Dim obj
For Each obj In ActiveSheet.Shapes
Debug.Print obj.Name & " - " & obj.Type
Next
End Sub
die Ergebnisse werden im Direktfenster angezeigt.
Wenn du einfach alle Graphischen Objekte auf dem Tabellenblatt löschen willst, nimm dieses Makro
Sub SchalterWeg()
Dim objWs As Worksheet
For Each objWs In ThisWorkbook.Worksheets
If objWs.Name "k_Test" Then objWs.DrawingObjects.Delete
Next
End Sub
Gruß, Daniel
Sub LoescheButton()
Dim Area() As String
Dim i As Integer
Dim MySheet As Worksheet
Dim objButten As Shape
'Schleife über alle Tabellen
For Each MySheet In ThisWorkbook.Worksheets
'Tabelle k_Test auslassen
If MySheet.Name <> "k_Test" Then
'Daten sammeln in Area
For Each objButten In MySheet.Shapes
If TypeName(objButten.OLEFormat.Object) = "Button" Then
Redim Preserve Area(i)
Area(i) = objButten.Name
i = i + 1
End If
Next objButten
'Butten dieser Tabelle löschen
If i > 0 Then
MySheet.Shapes.Range(Application.Transpose(Area)).Delete
End If
End If
i = 0: Erase Area
Next MySheet
End Sub
Gruß Tino
Sub LoescheButton()
Dim Area() As String
Dim i As Integer
Dim MySheet As Worksheet
Dim objButten As Shape
Dim sObjName As String
'Schleife über alle Tabellen
For Each MySheet In ThisWorkbook.Worksheets
'Tabelle k_Test auslassen
If MySheet.Name <> "k_Test" Then
'Daten sammeln in Area
For Each objButten In MySheet.Shapes
With objButten
If .Type = 12 Then
sObjName = .OLEFormat.progID
Else
sObjName = TypeName(.OLEFormat.Object)
End If
If sObjName = "Button" Or sObjName Like "*CommandButton*" Then
Redim Preserve Area(i)
Area(i) = .Name
i = i + 1
End If
End With
Next objButten
'Butten dieser Tabelle löschen
If i > 0 Then
MySheet.Shapes.Range(Application.Transpose(Area)).Delete
End If
End If
i = 0: Erase Area
Next MySheet
End Sub
Gruß Tino
Um alle Schaltflächen in Excel zu löschen, außer in der Tabelle „k_Test“, kannst Du folgendes VBA-Makro verwenden:
ALT + F11
, um den VBA-Editor zu starten.Sub SchalterWeg()
Dim objWs As Worksheet
Dim objShp As Shape
For Each objWs In ThisWorkbook.Worksheets
If objWs.Name <> "k_Test" Then
For Each objShp In objWs.Shapes
If objShp.Type = 8 Or objShp.OLEFormat.Object.progID = "Forms.CommandButton.1" Then
objShp.Delete
End If
Next
End If
Next
End Sub
ALT + F8
, wähle das Makro SchalterWeg
aus und klicke auf „Ausführen“.Das Makro entfernt alle Schaltflächen, die sich in den Tabellen befinden, außer in „k_Test“.
Problem: Das Makro löscht nicht alle Schaltflächen.
Lösung: Stelle sicher, dass Du sowohl Formular-Buttons als auch ActiveX-Steuerelemente überprüfst. Im obigen Code ist dies bereits berücksichtigt.
Problem: Es wird eine Fehlermeldung angezeigt.
Lösung: Überprüfe, ob das Makro korrekt in ein Modul eingefügt wurde und dass das Excel-Dokument nicht im geschützten Modus geöffnet ist.
Manuelles Löschen: Du kannst die Schaltflächen auch manuell löschen. Wähle das Auswahl-Tool im Zeichnungsbereich und ziehe einen Rahmen um die Schaltflächen, die Du löschen möchtest. Drücke anschließend die Entf
-Taste.
Bearbeiten-Funktion: Wenn Du keine anderen Objekte auf dem Arbeitsblatt hast, kannst Du die Funktion „Bearbeiten -> Gehe zu -> Inhalte -> Objekte“ verwenden, um alle Objekte auszuwählen und zu löschen.
Hier ist ein Beispiel für ein erweitertes Makro, das alle Schaltflächen inklusive CommandButtons löscht:
Sub LoescheButton()
Dim Area() As String
Dim i As Integer
Dim MySheet As Worksheet
Dim objButten As Shape
For Each MySheet In ThisWorkbook.Worksheets
If MySheet.Name <> "k_Test" Then
For Each objButten In MySheet.Shapes
If TypeName(objButten.OLEFormat.Object) = "Button" Or _
objButten.Type = 12 Then
ReDim Preserve Area(i)
Area(i) = objButten.Name
i = i + 1
End If
Next objButten
If i > 0 Then
MySheet.Shapes.Range(Application.Transpose(Area)).Delete
End If
End If
i = 0: Erase Area
Next MySheet
End Sub
Debug.Print
, um den Typ und Namen der Objekte im Direktfenster anzuzeigen. Dies hilft, Probleme mit dem Code zu identifizieren.1. Was ist der Unterschied zwischen Formular-Buttons und CommandButtons?
Formular-Buttons sind einfache Schaltflächen, die über die Entwicklertools hinzugefügt werden, während CommandButtons ActiveX-Steuerelemente sind, die mehr Funktionen bieten.
2. Kann ich das Makro anpassen, um bestimmte Schaltflächen zu behalten?
Ja, Du kannst die Bedingungen im Code anpassen, um spezifische Schaltflächen nach Namen oder Typ zu behalten.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen