Steuerelemte im Worksheet löschen

Hallo,

ich kopiere ein komplettes Tabellenblatt in eine neue Arbeitsmappe.

In der neuen Arbeitsmappe will ich den Teil der Tabelle löschen welche zuvor durch das Programm nicht ausgeführt wurde. In dieser Tabelle sind Steuerelemente vorhanden ( Kontrollkästchen)

Die Formatierung usw bekomme ich über vba gelöscht jedoch nicht die Steuerelemente.

Formatierung lösche ich in dem Ich ein Bereich anwähle(markiere), jedoch werden die Steuerelemente in dem Bereich nicht gelöscht.

Gibt es einen Befehl mit dem ich die Steuerelemte in dem Bereich auf einmal löschen kann?

Problem ist es sind viele Steuerelemente und die Anzahl ist abhängig wieviel in der Tabelle ausgefüllt wurde.

Wäre um jeden Tipp und Hilfe dankbar!

Ja, gibt es. Füge in deine VBA-Prozedur ein:

ActiveSheet.Shapes.SelectAll
Selection.Delete

Damit werden alle Steuerelemente erfasst

Gruss Jürgen

Sorry, keine Idee

Hallo faro01,
unter Suchen und Ersetzen findest du einen Menüpunkt
„Objekte markieren“ - dann kannst du einen Rahmen um alle ungeliebten Steuerelemente ziehen und sie auf einmal löschen.
Oder du nutzt den „Auswahlbereich“ (auch unter Suchen und Ersetzen) - in selbigem kannst du mehrere Steuerelemente auf einmal markieren und dann löschen.
Viel Erfolg,
Katharina

Für alle Steuerelemente:

Dim DelShape As Shape

For Each DelShape In Workbooks(Si\_Name).Sheets(1).Shapes
 If DelShape.Name \> "" Then DelShape.Delete
Next DelShape

oder für bestimmte Steuerelemente:

Dim DelShape As Shape

For Each DelShape In Workbooks(Si\_Name).Sheets(1).Shapes

 Select Case DelShape.Name
 Case Is = "CB\_Start"
 DelShape.Delete
 Case Is = "CB\_Druck"
 DelShape.Delete
 Case Is = "CommandButton1"
 DelShape.Delete
 Case Is = "CommandButton2"
 DelShape.Delete
 Case Is = "CommandButton3"
 DelShape.Delete
 Case Is = "CommandButton4"
 DelShape.Delete
 End Select

Next DelShape

Musst Du natürlich anpassen.
Hoffe es hilft, ist „alter“ Code von Office 97, nicht getestet auf höheren Versionen!
Viel Glück

So weit ich weiß, kann man Steuerelemente, die man per VBA erzeugt hat, per Makro löschen. Wurden sie manuell erzeugt, gibt es bei mir einen Laufzeitfehler - keine Ahnung warum.
Wenn du von jemand eine gutge Lösung bekommst, würde ich mich also auch freuen, diese zu hören.
Gruß. Gregor

Hi, habe da 2 Lösungen:

Dim i As Integer
Dim oChB As CheckBox
For i = z To 591
Cells(i, 11).Select
For Each oChB In ActiveSheet.CheckBoxes
If oChB.TopLeftCell.Address = ActiveCell.Address Then oChB.Delete
Next oChB
next i
dauert aber ziemlich lange im Programm.
Habe daher die Checkboxen nochmal neu gesetzt und habe sie dann über eine For schleife der Nummerierung anch vom WS gelöscht.

If z = 96 Then
For i = 41 To 320
ActiveSheet.Shapes("Check Box " & i & „“).Select
Selection.Cut
Next
For g = 323 To 335
ActiveSheet.Shapes("Check Box " & g & „“).Select
Selection.Cut
Next
Exit Sub
End If

Grüße
Markus

Und: gern geschehen.
War’s hilfreich? Brauchbar? Hat das das Problem gelöst?
War’s wenigstens interessant?
Ich find’s immer wieder schade, weder Danke noch Feedback zu bekommen :frowning:

Entschuldigung dass ich mich nicht gleich gemeldet habe, bin bei der Arbeit und habe gestern nicht viel Programmieren müssen!
Ich gebe normal immer Feedback ob die Hilfe was gebracht hat.

Deine Hilfe war eher auf Excel bezogen, ich wollte es in einem Makro haben wo dann das Programm die nicht benötigten Steuerelemente löscht.

Aber trotzdem Danke! :wink:
Grüße

Hallo,

hier gibt eine schnelle Lösung:

activesheet.shapes.selectall
selection.delete

für das aktive Tabellenblatt. Es reicht aus, wenn du die Befehle im Direktfenster ausführst.
Bei mehreren Tabellenblätter ist hier eine abgewandelte Lösung:

sub loesche_shapes()
for i = 1 to worksheets.count 'alle Tabellenblätter
worksheets(i).shapes.selectall
selection.delete
next i
end sub

PS: Bei dem Löschbefehl werden ALLE Objekte gelöscht, die sich auf dem Blatt befinden - Striche, Zeichnungen, Bilder, Textboxen, Kontrollkästchen ect. D.H. alles was nicht in den Zellen steht, wird gelöscht.

Hoffe konnte dir helfen.

Gruß Andreas

Hallo,

danke für deine Antwort.

Die Funktion habe ich auch gefunden, leider konnte ich sie nicht anwenden, da ich nicht alle Ojekte auf dem WS löschen kann.

habe das Problem mit einer for schleife gelöst. Musste davor jedes einzelne Kontrollkästchen neu setzten dass sie durchnummeriert sind.
Somit konnte ich bestimmte Kontrollkästchen wieder löschen. :smile:

Trotzdem danke für deine Hilfe!

Grüße

Hi,

sorry, nicht ganz mein Gebiet.
Ich hatte mich nur mit Access beschäftig.

Hallo, kann leider nicht helfen, bin kein Programmierer

Hallo, bin kein VBA-Spezialist, kann daher leider nicht helfen. Good luck,Schi