셀을 두 번 클릭했을 때 셀 내용을 외부 프로그램에 보내는 간단한 워크 시트 매크로를 만들었습니다. 처음에는 모든 코드가 시트 모듈에 있었고이를 기능을 원했던 각 시트에 복사해야했습니다. 이제는 시트 모듈의 코드를 표준 모듈의 서브 루틴 호출로 줄였습니다. 작동하지만, 기능이 필요한 각 시트에 코드를 복사해야합니다. 한 곳 (표준 모듈, 통합 문서 모듈 또는 클래스 모듈)에 코드를 입력하고 시트 뒤에 코드없이 통합 문서의 모든 시트에서 코드를 작동시키는 방법이 있습니까? 도와 줘서 고마워.여러 워크 시트에서 작동하는 일반 매크로를 만들 수 있습니까?
답변
더블 클릭을 처리하려면 시트에 이벤트 처리기가 필요합니다. 이 코드를 두 번 클릭 코드를 실행하려는 각 시트 뒤에 배치하십시오.
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim sWorksheet As String
Dim sValue As String
Dim sCell As String
sWorksheet = ActiveSheet.Name
sValue = Target.Text
sCell = Target.Address
Call DoubleClicked(sWorksheet, sValue, sCell)
End Sub
주 루틴을 시트가 아닌 모듈에 넣습니다.
Option Explicit
Sub DoubleClicked(SheetName As String, CellText As String, CellAddress As String)
' your code goes here
MsgBox "You double-clicked cell " & CellAddress & " on sheet " _
& SheetName & ". The text in that cell is: " & CellText
End Sub
논리가 각 시트에 반복되는 것을 원하지 않습니다. 변경 한 경우 모든 단일 시트에 대해 변경해야합니다. 각 시트에서 주 루틴을 호출하기 만하면 한 번만 작성하고 유지해야합니다.
ThisWorkbook
코드 모듈에는 각 시트에서 이벤트를 개별적으로 캡처하는 대신 사용할 수있는 Workbook_SheetBeforeDoubleClick
이벤트 처리기가 있습니다.
+1. 통합 문서의 모든 시트에서 두 번 누르기를 원하면이 태그를 사용하십시오. 제외 목록의 시트를 확인하지 않으면이 기능을 사용할 수도 있습니다. –
예 'Workbook_SheetBeforeDoubleClick'은 매크로를 실행할 올바른 위치입니다. –
코드를 게시 할 수 있습니까? –