Visio VBA-Funktion, um zu sehen, ob es eine Form vor / hinter einer Form
Frage
Gibt es eine Möglichkeit in Visio VBA, um zu sehen, ob es eine Form vor oder hinter einer Form in Visio ist?
Ich stelle mir vor ich etwas schreiben könnte, die den Begrenzungsrahmen von jeder Form in einer Seite überprüft, ob es den gleichen Raum wie meine Form einnimmt. Ich würde lieber etwas verwenden, built-in, da jede Form Überprüfung lange dauern könnte als eine Zeichnung mehr und mehr Formen wird.
Lösung
Die Shape.SpatialRelation Eigenschaft wird Ihnen sagen, wenn zwei Formen berühren. Die Shape.Index Eigenschaft wird Ihnen sagen, welche vor oder hinter in der z-Reihenfolge.
Hier ist ein einfaches Beispiel:
Public Sub DoShapesIntersect(ByRef shape1 As Visio.Shape, ByRef shape2 As Visio.Shape)
'// do they touch?
If (shape1.SpatialRelation(shape2, 0, 0) <> 0) Then
'// they touch, which one is in front?
If (shape1.Index > shape2.Index) Then
Debug.Print shape1.Name + " is in front of " + shape2.Name
Else
Debug.Print shape1.Name + " is behind " + shape2.Name
End If
Else
Debug.Print "shape1 and shape2 do not touch"
End If
End Sub
Lesen Sie mehr hier:
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow