Prüfen ob ein benannter Pfeil oder Gruppierung (diverse Formen) vorhanden sind und bei Bestätigung vorgang abbrechen

  • Excel

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von Petersilie.

    Prüfen ob ein benannter Pfeil oder Gruppierung (diverse Formen) vorhanden sind und bei Bestätigung vorgang abbrechen

    Hallo zusammen,

    ich baue mir gerade eine Vorlage mit der Bemaßungspfeile in eine Exceldatei automatisch eingefügt werden können.
    Dabei möchte ich aber verhinder, dass wenn bereits diese Maßpfeile eingefügt sind, der Button nochmal die selben Pfeile einfügt (wegen der Namensgebung).

    Jetzt kann ich mir vorstellen, dass sich diese problem auf viele Arten und wege umsetzen lässt...
    Zum beispiel:
    - Nach dem erstellen der Pfeile den Button deaktivieren.
    - Eine Schleife in der Namensgebung einbauen, dass das problem garnicht entsteht.
    Oder ich prüfe vor der erstellung, ob bereits ein Pfeil mit einem definierten Namen existiert und breche dann den Ablauf ab.

    letzteres wäre das, was ich mir jetzt vorgestellt habe.

    In meiner Ausführung habe ich jetzt momentan auf Variablen verzichtet, kann mir aber vorstellen alles nochmal etwas auf zu arbeiten um es flexibler zu machen.

    Mein bisheriger Code sieht wie folgt aus:

    Visual Basic-Quellcode

    1. Sub FrontArrows()
    2. '
    3. ' FrontArrows Makro
    4. '
    5. '
    6. Application.ScreenUpdating = False
    7. ActiveSheet.Shapes.AddConnector(msoConnectorStraight, 90, 93.75, 90, 262.5). _
    8. Select
    9. Selection.ShapeRange.Name = "FrontLineLeft"
    10. Selection.Name = "FrontLineLeft"
    11. With Selection.ShapeRange.Line
    12. .Visible = msoTrue
    13. .ForeColor.RGB = RGB(255, 0, 0)
    14. .Transparency = 0
    15. .Visible = msoTrue
    16. .Weight = 3
    17. End With
    18. Selection.Copy
    19. ActiveSheet.Paste
    20. Selection.ShapeRange.IncrementLeft -8.25
    21. Selection.ShapeRange.IncrementTop -12
    22. Selection.ShapeRange.IncrementLeft 262.5
    23. Selection.ShapeRange.Name = "FrontLineRight"
    24. Selection.Name = "FrontLineRight"
    25. ActiveSheet.Shapes.AddConnector(msoConnectorStraight, 91.5, 251.25, 355.5, _
    26. 251.25).Select
    27. Selection.ShapeRange.Name = "FrontArrow"
    28. Selection.Name = "FrontArrow"
    29. Selection.ShapeRange.Line.BeginArrowheadStyle = msoArrowheadOpen
    30. Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadOpen
    31. With Selection.ShapeRange.Line
    32. .Visible = msoTrue
    33. .ForeColor.RGB = RGB(255, 0, 0)
    34. .Transparency = 0
    35. .Visible = msoTrue
    36. .Weight = 3
    37. End With
    38. ActiveSheet.Shapes.Range(Array("FrontLineLeft", _
    39. "FrontLineRight", "FrontArrow")).Select
    40. Selection.ShapeRange.Group.Select
    41. Selection.ShapeRange.Name = "FrontMeasuring"
    42. Selection.Name = "FrontMeasuring"
    43. Application.ScreenUpdating = True
    44. End Sub


    Dieser funktioniert an sich auch. Jedoch fehlt mir die Prüfung bzw. die oben genannte Möglichkeit zu prüfen, ob da eine der Formen bereits vorhanden ist oder nicht.

    Hab es wie folgt versucht:

    Visual Basic-Quellcode

    1. If ActiveSheet.Shapes(Application.Caller).Name = "FrontLineLeft" Then
    2. MsgBox "Arrows still exist, Please use them"
    3. End If


    Dabei kommt aber nicht wirklich was raus... er findet den Namen nicht.

    Ich wäre allen über sämtlichen Vorschläge dankbar wie ich mein Problem lösen kann!

    Hab auch bereits nach anderen möglichkeiten gesucht, jedoch nicht wirklich viel hilfreiches gefunden!

    Ich bedanke mich schon mal im Vorfeld für eure Antworten! :)

    Grüße,
    Casimus