2013-07-29 2 views
0

여러 워크 시트에 기능을 추가 할 예정인 VBA 추가 기능이 있습니다. 워크 시트 이벤트 및 트리거 매크로를 수신하는 클래스가 있습니다. 이 작동하지만 개인 매크로 매개 변수를 호출 할 수 없습니다.매개 변수가있는 개인 VBA 서브 루틴 호출

내 이벤트 리스너 클래스 모듈에 있고 이것이다 :

그것은과 같이 모듈에 통합 문서를 여는 초기화
Option Explicit 
Private WithEvents App As Application 

Private Sub Class_Initialize() 
    Set App = Application 
End Sub 

Private Sub App_SheetChange(ByVal Sh As Object, ByVal Source As Range) 
    On Error GoTo Finish 
    App.EnableEvents = False 
    Call Application.Run("Worksheet_Change", "Source") 
Finish: 
    App.EnableEvents = True 
End Sub 

:

Sub Auto_Open() 
    Set clsAppEvents = New clsApplicationEvents 
End Sub 

내가 노력하고있어 매크로 전화를 다시 별도의 모듈에 다음과 같은 형태를 취합니다 : 나는 C의 다음과 같은 방법을 시도했습니다

Private Sub Worksheet_Change(ByVal Target As Range) 
    'Do some work on range 
End Sub 

을 매크로를 Alling은 아무도 지금까지 일하지 않은 : 모든이없는

Call Application.Run("Worksheet_Change", "Source") 
Application.Run "Worksheet_Change", "Source" 
Application.Run "Worksheet_Change" "Source" 
+2

이것을 시도 할 때 얻는 오류를 포함 시키십시오. 어쨌든, 가장 명백한 문제는 Range 객체 대신에 문자열로서'Source'를 전달한다는 것입니다. 실행 호출에서 소스 주변의 따옴표를 제거하십시오. –

+0

매크로가 단순히 실행되지 않았지만 따옴표를 제거하는 등의 오류 메시지가 없었습니다. Application.Run "Worksheet_Change", Source - 트릭을 수행했습니다. 당신이 대답을하고 싶다면 그것을 해결 된 것으로 표시 할 것입니다. 감사 – db579

답변

1

인수를 실행하는 것은 너무

Application.Run "Worksheet_Change", "Source" 

될 경우, 문자열이어야합니다

Application.Run "Worksheet_Change", Source 
그것은에 도움이 될
관련 문제