Nehmen wir ein Excel-Arbeitsblatt mit vielen Formen. Um zwei Formen auszuwählen:
ActiveSheet.Shapes.Range(Array("Freeform 314", "Freeform 278")).Select
Das Ziel ist es, alle Formen zu löschen, die mit "Freiform" .
Ich habe ein Beispiel gefunden, das sich auf MS VBScript Regulärer Ausdruck 5.5 , aber die Formen befinden sich nicht auf bestimmten Zellen. Die Menge oder spezifische Anzahl der Formen ist fast unbekannt. Eine hässliche Lösung kann also darin bestehen, die Namen der Zeichenketten mit roher Gewalt zu erzwingen. Andererseits hoffe ich, dass Sie mir helfen können, eine elegante Lösung zu finden.
Der folgende Code funktioniert nicht, aber Sie können sich ein besseres Bild von dem Problem machen.
Sub DeleteShapes()
Dim re As New RegExp
re.Pattern = "Freeform*"
Dim cell As Range
For Each cell In ActiveSheet.Shapes.Range(Array(re.Pattern)).Select
Selection.delete
Next cell
End Sub