1

複数のワークシートに機能を追加する 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

マクロを呼び出す次の方法を試しましたが、これまでのところ機能していません。

Call Application.Run("Worksheet_Change", "Source")
Application.Run "Worksheet_Change", "Source"
Application.Run "Worksheet_Change" "Source"
4

1 に答える 1

2

Run の引数はすべて文字列である必要はありません。

Application.Run "Worksheet_Change", "Source"

する必要があります

Application.Run "Worksheet_Change", Source
于 2013-07-29T15:00:41.750 に答える