Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
356to360
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
356to360
356to360
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige