Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
892to896
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
892to896
892to896
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Shapes in einem bestimmten Bereich löschen

Shapes in einem bestimmten Bereich löschen
07.08.2007 15:36:50
uli
Hallo Excel-Gemeinde,
wieder einmal ein Problem bei dem ihr mir vielleicht helfen könnt.
Ich habe ein Blatt mit mehreren CommandButtons am oberen Rand. Ab Zeile 14 werden in der Spalte G bis L über ein Makro bis weit über 2000 OptionButtons erstellt.
Über ein Weiteres Makro möchte ich nun gerne das Blatt "reseten" und die OptionButton löschen. Habe es zunächst über:
For Each obj In ActiveSheet.OLEObjects
If obj.progID = "Forms.OptionButton.1" Then
obj.Delete
End If
Next obj
probiert, doch das dauert viel zu lange, oft reagiert excel danach auch nicht mehr.
Jetzt hab ich eine neue Lösung gefunden:
Dim myShape As Shape
For Each myShape In ActiveSheet.Shapes
If Not Application.Intersect(myShape.OLEFormat.Object.TopLeftCell, _
Range("G14:L65500")) Is Nothing Then myShape.Delete
Next
Hier bekomme ich allerdings immer die Fehlermeldung:
"Die TopLeftCell-Eigenschaft des Dropdown-Objektes kann nicht zugeordnet werden"
Weiß jemand vielleicht, was ich falsch mache, oder kennt jemand eine andere, schnelle Variante zum OptionButton löschen?
Gruß
Uli

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Shapes in einem bestimmten Bereich löschen
07.08.2007 15:55:00
IngGi
Hallo uli,
versuch mal diese Variante:

For Each myShape In ActiveSheet.Shapes
If Not Application.Intersect(myShape.TopLeftCell, _
Range("G14:L65500")) Is Nothing Then myShape.Delete
Next

Deine Variante hat bei mir allerdings auch funktioniert.
Gruß Ingolf

AW: Shapes in einem bestimmten Bereich löschen
07.08.2007 16:07:00
uli
Hallo Ingolf,
danke für Deine Antwort. Leider funktioniert auch diese nicht. Fehlermeldung wieder 1004, allerdings mit anderem Text: Anwendung- oder objektorientierter Fehler.
Das komische ist, dass es bei mir auch manchmal klappt. Und dann wieder 100 mal nicht.
Gruß
Uli

Anzeige
AW: Shapes in einem bestimmten Bereich löschen
07.08.2007 16:10:39
Renee
Mazwara Uli,
In welchem Kontext (Standardmodul, Blatt, Ereignis-Prozedur etc.) laufen diese Codeschnipsel ?
Greetz Renee

AW: Shapes in einem bestimmten Bereich löschen
07.08.2007 16:15:00
uli
Hallo Renee
Ist ein Standardmodul und wird in Sheet(3) ausgeführt. Was eine Eregnis-Prozedur ist, weiß ich nicht.

Sub test1()
Dim myShape As Shape
Sheets(3).Select
For Each myShape In ActiveSheet.Shapes
If Not Application.Intersect(myShape.OLEFormat.Object.TopLeftCell, _
Range("g14:L65000")) Is Nothing Then myShape.Delete
Next
End Sub


AW: Shapes in einem bestimmten Bereich löschen
07.08.2007 16:26:00
Renee
Hi Uli,
Eine Ereignis-Prozedur wäre z.B. Worksheet_Change(ByVal Target As Range).
Vielleicht bringt diese Änderung was:

Sub test1()
Dim myShape As Shape
Application.EnableEvents = False
For Each myShape In Sheets(3).Shapes
If Not Application.Intersect(myShape.OLEFormat.Object.TopLeftCell, _
Sheets(3).Range("g14:L65000")) Is Nothing Then myShape.Delete
Next
Application.EnableEvents = True
End Sub


Greetz Renee

Anzeige
AW: Shapes in einem bestimmten Bereich löschen
07.08.2007 16:41:35
uli
einmal hat es wieder geklappt, ab dann nicht mehr. Dabei ist eigentlich alles gleich. Ich erstelle die OptionButton über ein Makro und versuche sie dann wieder über das andere Makro zu entfernen....

AW: Shapes in einem bestimmten Bereich löschen
07.08.2007 16:50:10
Renee
Hi Uli,
Letzter Tip/Vermutung
Bau vor jeder (Erstellen und Löschen) End Sub den Befehl:

ThisWorkbook.Save


ein.
Greetz Renee

AW: Shapes in einem bestimmten Bereich löschen
07.08.2007 16:12:07
uli
Nachtrag:
Die For Each- Next -Schleife läuft ordentlich durch, bis das erste Shape in der "Range" erreicht wird. dann kommt die sofort die Fehlermeldung.
Gruß
Uli

Anzeige
Fehler 1004 bei Shapes.Delete
07.08.2007 16:37:10
Reinhard
Hi Uli,
egal ob OptionButtons oder CommandButton, beide Codes löschen sie problemlos unter XL2002:

Sub test1()
Dim myShape As Shape
Sheets(3).Select
For Each myShape In ActiveSheet.Shapes
If Not Application.Intersect(myShape.OLEFormat.Object.TopLeftCell, _
Range("g14:L65000")) Is Nothing Then myShape.Delete
Next myShape
End Sub
Sub test2()
Dim myShape As Shape
Sheets(3).Select
For Each myShape In ActiveSheet.Shapes
If Not Application.Intersect(myShape.TopLeftCell, _
Range("g14:L65000")) Is Nothing Then myShape.Delete
Next myShape
End Sub


Gruß
Reinhard
Gruß
Reinhard

Anzeige
AW: Fehler 1004 bei Shapes.Delete
07.08.2007 18:48:00
uli
Hallo Reinhard,
habe jetzt das Problem gelöst. Scheinbar war ein Shape, das sich irgendwie früher einmal in das Blatt gemogelt hat, kaputt. Durch i=activesheet.shapes.count, habe ich für "i" immer ein shape zuviel gehabt, als eigentlich da sein dürfte. Dieses Shape konnte ich allerdings nicht "selecten" und bin es nur über activesheet.drawingobjects.delete losgeworden.
Jetzt funktioniert alles. Vielen Dank für eure Geduld und das Ausprobieren.
Gruß
Uli

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige