Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Shapes

Forumthread: Shapes

Shapes
02.01.2004 13:45:34
Beat
Hallo, kann mir jemand weiterhelfen

Bei wenig Shapes funktioniert diese Procedur einwandfrei, ab einer gewissen Anzahl kommt keine VBA Fehlermeldung, sondern das Excel meldet sich ab (Excel hat ein Problem festgestellt........)


Private Sub DeleteAllShapes(ws As Worksheet)
Dim i As Long
If ws Is Nothing Then Exit Sub
With ws
For i = .Shapes.Count To 1 Step -1
On Error Resume Next
.Shapes(i).Delete
On Error GoTo 0
Next i
End With
End Sub


Hat jemand eine Idee an was das liegen könnte ?

Mit bestem Dank zum Voraus

Beat
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Shapes
02.01.2004 13:57:38
hwe
Naja Beat,

das liegt daran, das jedes Delete .Shapes.Count auch runter zählt.
Und so was wie eine dynamische For Next-Schleife wurde noch nicht erfunden. Man verwende das passende Werkzeug, While ...

Gruß HW
AW: Shapes
02.01.2004 14:18:05
Beat
Hallo HW

Ich versteh Deine Antwort nicht ganz: Die Variable .Shapes.Count enthält doch die Anzahl Shapes und wird von z.B 100 auf 1 runtergezählt und dies funktioniert ja auch bis zu einer gewissen Anzahl Shapes ????

Gruss Beat
Anzeige
AW: Shapes
02.01.2004 14:26:28
MRR
Hi Beat,
mal so versuchen:

Private Sub DeleteAllShapes(ws As Worksheet)
Dim i As Long, j As Long
If ws Is Nothing Then Exit Sub
With ws
j = .Shapes.Count
For i = j To 1 Step -1
On Error Resume Next
.Shapes(i).Delete
On Error GoTo 0
Next i
End With
End Sub

Geht es so?
Gruss, Matthias
Anzeige
Leider ohne Erfolg !!!!
02.01.2004 14:33:43
Beat
Hallo Matthias

Danke für Deine schnelle Antwort !

Funktioniert leider auch nicht; d.h. ab einer gewissen Anzahl Shapes verabschiedet sich das gesamte Excel.

Gruss Beat
AW: Leider ohne Erfolg !!!!
02.01.2004 14:44:44
Josef Ehrensberger
Hallo Beat,

probier mal so.



Private Sub DeleteAllShapes(ws As Worksheet)
Dim shp As Shape
For Each shp In ws.Shapes
shp.Delete
Next
End Sub

     Code eingefügt mit Syntaxhighlighter 2.5


Gruß Sepp
Anzeige
geht noch kürzer!
02.01.2004 14:50:10
Josef Ehrensberger
Hi,

es geht noch kürzer!



Private Sub DeleteAllShapes(ws As Worksheet)
Dim shp As Shape
ws.Activate
ws.Shapes.SelectAll
Selection.Delete
End Sub

     Code eingefügt mit Syntaxhighlighter 2.5


Gruß Sepp
Anzeige
Ups
02.01.2004 14:58:14
Martin Beck
Hallo Sepp,

tut mir leid wg. der Überschneidung, ich hatte die Seite nicht mehr aktualisiert.

Gruß
Martin Beck
Noch ein Versuch - ohne Schleife
02.01.2004 14:56:33
Martin Beck
Hallo Beat,

versuche mal


Sub DeleteTheShapes()
ActiveSheet.Shapes.SelectAll
Selection.Delete
End Sub


Gruß
Martin Beck
Anzeige
Hoffnungslos ?
02.01.2004 15:21:37
Beat
Hallo Martin, hallo Sepp

Danke für Eure Antworten, funktioniert leider auch nicht, aber wenigstens verabschiedet sich jetzt nicht mehr das gesamte Excel, sondern es erscheint die Fehlermeldung -Laufzeitfehler 7 - nicht genügend Speicher ????

Gruss Beat
AW: Hoffnungslos ?
02.01.2004 16:20:06
hwe
Ich dachte eigentlich ehr an so wie

While ActiveSheet.Shapes.Count > 0
ActiveSheet.Shapes(1).Delete
Wend

Wenn das net hinhaut, dann hast Du wohl ein Problem mit der internen Struktur der Mappe. Dann heißt es umziehen...

Gruß HW
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige