0
이 가이드 https://msdn.microsoft.com/en-us/library/office/ff767482.aspx에서 셰이프를 끌어다 놓을 때 이벤트 트리거를 얻을 수 있습니다. 하지만 문제는이 이벤트 트리거를 수신했을 때 모양 위치가 드롭 위치로 업데이트되지 않는다는 것입니다. 내 질문은 Visio의 다른 셰이프와 셰이프에 대한 중복 검사를 수행하기 위해 셰이프를 놓은 후에 셰이프의 업데이트 된 위치를 얻는 방법입니다.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
최종 기능
첫 번째If
문에서
안녕하세요. 답장을 보내 주셔서 감사합니다. evtMouse.x 및 evtMouse .y 항상 내 선택 된 도형의 놓기 위치에서 몇 인치 조금 떨어져있는 것 같습니다. 내가 수행하여 좌표를 추출 할 때 ActiveWindow.Selection (1) 사용하여 선택한 셰이프를 얻으려고 : Selectedshp.Cells ("PinX"). ResultIU 모양의 원래 드롭 위치에서 약간 오프셋 된 값을 제공하는 것 같습니다. 내가 떨어 뜨린 모양의 정확한 좌표를 얻을 수없는 것 같습니다. – NiTuRen
스냅을 사용하면 실제 마우스 위치에서 떨어 뜨린 모양의 최종 위치가 변경되고이 효과는 확대/축소 레벨 이상으로 확대되거나 더 분명해질 것입니다. – JohnGoldsmith