3 Stimmen

Alle Excel-Zeichenebenenformen löschen, die einem Muster entsprechen

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

4voto

Joel Spolsky Punkte 32916

Sie brauchen überhaupt keinen regulären Ausdruck, um die Freiform-Formen zu finden.

Dim shape As Excel.shape

For Each shape In ActiveSheet.Shapes

    If Left(shape.Name, 8) = "Freeform" Then
        shape.Delete
    End If

Next

3voto

Alain Punkte 25558

Es scheint, als wäre es viel einfacher, wenn Sie sich

Dim shape as Variant
For each shape in ActiveSheet.Shapes
   If instr(1, shape.Name, "Freeform") <> 0 then shape.delete
Next shape

Ich habe es getestet und es funktioniert. Es nimmt die gesamte Sammlung von Formen auf dem aktiven Blatt und löscht sie für jede einzelne, wenn das Wort "Freeform" im Namen der Form enthalten ist.

Wenn Sie gezielt nur Formen löschen wollen, die mit "Freeform" beginnen, sollten Sie anstelle des Tests: instr(1, shape.Name, "Freeform") <> 0 sollten Sie verwenden: instr(1, shape.Name, "Freiform") = 1

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X