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.
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
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
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
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
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.
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.
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.