셀 위로 마우스를 가져 가면 Excel 매크로를 어떻게 트리거 할 수 있습니까?


2

스프레드 시트에서 하나 이상의 셀 위로 마우스를 움직여 Excel 매크로를 실행하는 방법을 알 수 없었습니다.

답변:


3

공식적인 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 내에서 호출되면 사라집니다.



1

HYPERLINK 접근 방식은 귀엽고 매우 슬프지만 여전히 매우 제한적입니다. 예를 들어 UDF 코드에 sStr = ""를 사용할 수도 없습니다 (결과는 Excel 버전에 따라 다를 수 있음). MouseMove 속성이있는 투명 (또는 불투명) 레이블이 훨씬 좋습니다. 대신 코드를 넣으십시오. (나는 4 분 안에 단계별로 거의 완벽하게 효율적으로 제공하는 비디오 링크를 찾았으며 더 나은 의견이 있습니다. 단계별 가이드를 만들면 30 분이 소요됩니다.) . 그러나 링크를 표시하면이 게시물이 Stack Exchange에 의해 다시 삭제되므로 원할 경우 PM으로 보내 주시면 며칠 내에 답변을 드리겠습니다.)


1
이 방법을 사용하겠습니다. 하이퍼 링크는 작동 방식이 "멋지다"(어떻게 작동하는지)하더라도이를 수행하는 잘못된 방법입니다. 대신 라벨을 만드십시오. 호버 코드를 MouseMove 이벤트에 넣습니다. 그렇게 간단합니다. 레이블을 투명하게 만들 수도 있습니다. 레이블보다 셀 내용이 표시되도록합니다. MouseMove에서 코딩하는 것의 한 예는 텍스트로 모양을 만들고 (.AddShape 사용) 1-2 초 후에 삭제하는 것입니다.
MicrosoftShouldBeKickedInNuts

1

당신은 투명 액티브 라벨 (사용할 수있는 .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이벤트가 트리거되지 않지만 뒤에있는 셀을 클릭 할 수 있습니다 (그 반대도 가능).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.