2013-07-29 54 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 

和我想要的宏調用是在一個單獨的模塊中,並採取以下形式:

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

我試過以下方法c阿靈宏觀和至今沒有工作過:

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

這將有助於包括您在嘗試此操作時遇到的錯誤。無論如何,最明顯的問題似乎是你將'Source'作爲一個字符串而不是Range對象傳遞。嘗試在呼叫運行時刪除源文件中的引號。 –

+0

我沒有錯誤信息,宏只是沒有運行,但刪除了像這樣的引號:Application.Run「Worksheet_Change」,來源 - 做了伎倆。如果你想作出回答,我會將其標記爲已解決。謝謝 – db579

回答

1

的參數運行不都已經是字符串,所以

Application.Run "Worksheet_Change", "Source" 

應該

Application.Run "Worksheet_Change", Source 
相關問題