У меня есть надстройка 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 Alling макрос и никто не работал до сих пор:
Call Application.Run("Worksheet_Change", "Source")
Application.Run "Worksheet_Change", "Source"
Application.Run "Worksheet_Change" "Source"
Это помогло бы включить ошибку, которую вы получите, когда попробуете это. В любом случае наиболее очевидной проблемой является то, что вы передаете 'Source' как строку вместо объекта Range. Попробуйте удалить цитаты вокруг источника в вашем вызове «Выполнить». –
У меня не было сообщения об ошибке, макрос просто не запускался, но удалял кавычки следующим образом: Application.Run «Worksheet_Change», Source - сделал трюк. Если вы хотите сделать ответ, я помечаю его как решившийся. благодаря – db579