Zurücksetzen der Formen auf die Standardeinstellungen in Excel

Zurücksetzen der Formen auf die Standardeinstellungen in Excel

Ich habe etwa 70 Formen in einem Planungsdokument, das ich für die Arbeit verwende. Alles ist in Ordnung, aber ich versuche, eine neue Funktion hinzuzufügen. Diese Formen werden jede Woche mithilfe von Bearbeitungspunkten geändert, um auf einer Karte angezeigt zu werden. Manchmal wird Form „A“ jedoch nicht verwendet, sodass ich sie zusammen mit allen anderen Formen einfach auf die Standardgröße zurücksetzen möchte. Weiß jemand, wie ich dies über ein Makro erreichen kann? Ich habe viele Dinge ausprobiert und überall gesucht, aber ich bin mit meinem Latein am Ende ...

Wenn eine Form nicht die Standardform ist, stellen Sie alle nicht standardmäßigen Formen auf die Standardgröße ein.

Dank im Voraus

Antwort1

Ich weiß nicht, wo Excel die Standardhöhe und -breite für Formen speichert. Ich gehe davon aus, dass Sie mit Standard die Größe der Form meinen, wenn Sie zum Platzieren klicken, anstatt sie durch Ziehen zu vergrößern. Ovale sind beispielsweise 72 x 72 groß. Dasselbe gilt für Quadrate.

Eine Möglichkeit, dies zu tun, besteht darin, die AlternativeText-Eigenschaft der Form zu verwenden. Sie können die Standardgrößen in dieser Eigenschaft speichern. Klicken Sie mit der rechten Maustaste auf die Form, wählen Sie „AutoForm formatieren“, gehen Sie zur Registerkarte „Web“ und geben Sie 72|72 ein. Ich verwende das Pipe-Zeichen als Trennzeichen zwischen Breite und Höhe. Sie müssten die Standardgröße für jeden Formtyp herausfinden, aber wie gesagt, ich weiß nicht, wo Excel sie speichert. Sobald Sie die AlternativeText-Eigenschaft festgelegt haben, können Sie Code wie den folgenden verwenden

Sub FixShape()

    Dim shp As Shape
    Dim vaDefault As Variant

    Const sDELIM = "|"

    For Each shp In Sheet1.Shapes
        If Len(shp.AlternativeText) > 0 Then
            vaDefault = Split(shp.AlternativeText, sDELIM)
            shp.Width = vaDefault(0)
            shp.Height = vaDefault(1)
        End If
    Next shp

End Sub

Dadurch wird jede Form, die etwas in Alternativtext hat, auf die von Ihnen aufgezeichnete Breite und Höhe eingestellt. Dies setzt voraus, dass Sie Alternativtext nicht für etwas anderes verwenden.

Wenn Sie AlternativeText nicht zum Speichern verwenden möchten, können Sie die Werte in VBA fest codieren

Sub FixShape2()

    Dim shp As Shape

    Const lDEFOVALHEIGHT As Long = 72
    Const lDEFOVALWIDTH As Long = 72
    Const lDEFSQRHEIGHT As Long = 72
    Const lDEFSQRWIDTH As Long = 72

    For Each shp In Sheet1.Shapes
        Select Case shp.AutoShapeType
            Case msoShapeOval
                shp.Height = lDEFOVALHEIGHT
                shp.Width = lDEFOVALWIDTH
            Case msoShapeRectangle
                shp.Height = lDEFSQRHEIGHT
                shp.Width = lDEFSQRWIDTH
        End Select
    Next shp

End Sub

verwandte Informationen