0
このガイドでは、https://msdn.microsoft.com/en-us/library/office/ff767482.aspxでは、図形をドラッグアンドドロップするとイベントトリガを取得できます。しかし、問題は、このイベントトリガーを受け取ったときに形状の位置がドロップ位置に更新されないということです。私の質問は、Visioで他の図形とシェイプのオーバーラップチェックを行うためにドロップした後、シェイプの更新された位置を取得する方法です。あなたの最初のIf
声明でVisio dragDrop図形の位置が更新されない
Dim strMessage As String
'Find out which event and event extension fired
Select Case nEventCode
Case visEvtCodeMouseMove
Dim strInfo As String
If (pSubjectObj.DragState = visMouseMoveDragStatesDrop) Then
strMessage = "MouseMove - dragDrop"
'Shape position is not updated to drop position here
End If
Case Else
strMessage = "Other (" & nEventCode & ")"
End Select
'Display the event name and the event code
If (Len(strMessage)) Then
Debug.Print strMessage
End If
エンド機能
こんにちは、返信ありがとうございます。 evtMouse.xとevtMouse .yは、選択したシェイプのドロップ位置から数インチ離れているようです。を使って座標を抽出すると、ActiveWindow.Selection(1)を使用して選択したシェイプを取得しようとしました。 Selectedshp.Cells( "PinX")。ResultIU これは、形状の元のドロップ位置から少しずれた値を与えているようです。私はそれを落とした後、形状の正確な座標を得ることができません。 – NiTuRen
スナップすると、ドロップした図形の最終的な位置が実際のマウスの位置から変更され、このエフェクトはズームレベルより遠くになるほど拡大または明白になります。 – JohnGoldsmith