2012-08-10 4 views
1

셀을 두 번 클릭했을 때 셀 내용을 외부 프로그램에 보내는 간단한 워크 시트 매크로를 만들었습니다. 처음에는 모든 코드가 시트 모듈에 있었고이를 기능을 원했던 각 시트에 복사해야했습니다. 이제는 시트 모듈의 코드를 표준 모듈의 서브 루틴 호출로 줄였습니다. 작동하지만, 기능이 필요한 각 시트에 코드를 복사해야합니다. 한 곳 (표준 모듈, 통합 문서 모듈 또는 클래스 모듈)에 코드를 입력하고 시트 뒤에 코드없이 통합 문서의 모든 시트에서 코드를 작동시키는 방법이 있습니까? 도와 줘서 고마워.여러 워크 시트에서 작동하는 일반 매크로를 만들 수 있습니까?

+0

코드를 게시 할 수 있습니까? –

답변

2

더블 클릭을 처리하려면 시트에 이벤트 처리기가 필요합니다. 이 코드를 두 번 클릭 코드를 실행하려는 각 시트 뒤에 배치하십시오.

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 

논리가 각 시트에 반복되는 것을 원하지 않습니다. 변경 한 경우 모든 단일 시트에 대해 변경해야합니다. 각 시트에서 주 루틴을 호출하기 만하면 한 번만 작성하고 유지해야합니다.

5

ThisWorkbook 코드 모듈에는 각 시트에서 이벤트를 개별적으로 캡처하는 대신 사용할 수있는 Workbook_SheetBeforeDoubleClick 이벤트 처리기가 있습니다.

+0

+1. 통합 문서의 모든 시트에서 두 번 누르기를 원하면이 태그를 사용하십시오. 제외 목록의 시트를 확인하지 않으면이 기능을 사용할 수도 있습니다. –

+0

예 'Workbook_SheetBeforeDoubleClick'은 매크로를 실행할 올바른 위치입니다. –

관련 문제