Name einer Shape(Rectangle) ändern und löschen in VBA?
Mithilfe eines Makros in VBA erstelle ich ein Rechteck an einer bestimmten Stelle, was wiederum dann beim nächsten Öffnen der Datei an einer anderen Stelle erstellt wird. Dass dann nicht nach einer gewissen Zeit das Blatt voll ist mit Rechtecken, würde ich gerne bei bei Start eine Range nach diesem Rechteck durchsuchen und löschen, bisher mache ich das so:
Dim shp As Shape
For Each shp In ActiveSheet.Shapes
If shp.Name = "HeuteRechteck" Then
shp.Delete
End If
Next
Hier bekomme ich allerdings "Objekt unterstützt diese Eigenschaft oder Methode nicht", was womöglich an der Benennung liegt. Benennen u.a. tue ich das Rechteck so:
ActiveSheet.Shapes.AddShape(msoShapeRectangle, ActiveCell.Left, ActiveCell.Top, 12, 795).Select
Selection.ShapeRange.Line.Visible = msoFalse
With Selection.ShapeRange.Fill.Shapes(1)
.Visible = msoTrue
.ForeColor.RGB = RGB(146, 208, 80)
.Transparency = 0.5
.Name = "HeuteRechteck"
Mach ich beim Benennen was falsch?
Habt ihr irgendwelche Ideen oder Ansätze?
2 Antworten
![](https://images.gutefrage.net/media/user/zalto/1444744948_nmmslarge.jpg?v=1444744948000)
Ich denke, dass der Fehler schon beim Benennen liegt. Versuche es mit:
Selection.ShapeRange.Name = "HeuteRechteck"
Dann wird es auch wieder gelöscht.
![](https://images.gutefrage.net/media/user/computi/1444745781_nmmslarge.jpg?v=1444745781000)
Ja, tatsächlich. Komisch, dachte das reicht wenn es oben steht.
![](https://images.gutefrage.net/media/user/Oubyi/1652363895285_nmmslarge__0_0_120_120_040779a85bcf89fd282fa9af46f30da0.png?v=1652363895000)
Also der Lösch-Code läuft bei mir einwandfrei.
Wenn ich ein Rechteck "HeuteRechteck" benenne, wird es auch gelöscht.
en zweiten bekomme ich auf die Schnelle nicht zum laufen.
D
Aber schau doch mal im Sheet, wenn Du ein Rechteck anklickst, was dann im Adressfenster ganz oben links steht.
Wenn da irgend ein Name steht, müsste der erste Code eigentlich laufen.
Die Fehlermeldung da, kann ich mir nicht erklären.