답변:
공식적인 OnMouseOver 이벤트는 없지만 VBA 해킹을 통해 해결할 수 있습니다. HYPERLINK 기능을 사용합니다. 이 자세한 내용입니다 여기에 ,하지만 요약 :
새 VBA 모듈을 만든 다음 사용자 정의 함수를 추가하여 원하는 작업을 수행하는 경우 :
Public Function OnMouseOver()
Sheet1.Range("A2").Value = "You hovered over a cell"
End Function
그런 다음 HYPERLINK 호출을 통해 여기에 액세스 할 수 있습니다.
=IFERROR(HYPERLINK(OnMouseOver(),"Click here"), "Click here")
#VALUE를 피하기 위해 IFERROR 안에 싸여 있습니다! 함수가 셀을 업데이트하지 않아야하기 때문에 오류 메시지가 표시되지만 HYPERLINK 내에서 호출되면 사라집니다.
HYPERLINK 접근 방식은 귀엽고 매우 슬프지만 여전히 매우 제한적입니다. 예를 들어 UDF 코드에 sStr = ""를 사용할 수도 없습니다 (결과는 Excel 버전에 따라 다를 수 있음). MouseMove 속성이있는 투명 (또는 불투명) 레이블이 훨씬 좋습니다. 대신 코드를 넣으십시오. (나는 4 분 안에 단계별로 거의 완벽하게 효율적으로 제공하는 비디오 링크를 찾았으며 더 나은 의견이 있습니다. 단계별 가이드를 만들면 30 분이 소요됩니다.) . 그러나 링크를 표시하면이 게시물이 Stack Exchange에 의해 다시 삭제되므로 원할 경우 PM으로 보내 주시면 며칠 내에 답변을 드리겠습니다.)
당신은 투명 액티브 라벨 (사용할 수있는 .BackStyle = fmBackStyleTransparent
, .Caption = ""
,를 .Visible = True
그것의 세포 이상) 및 처리 MouseMove
이벤트 :
Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Debug.Print Button, Shift, X, Y
End Sub
Label의 .Visible
속성이 False로 설정되면 MouseMove
이벤트가 트리거되지 않지만 뒤에있는 셀을 클릭 할 수 있습니다 (그 반대도 가능).