Я работаю над кодом, который может прослушивать все события, происходящие в пользовательской форме, включая саму пользовательскую форму.
Основной метод принимает либо MSForms.Control
или MSForms.UserForm
как основной параметр.Чтобы учесть любую из этих опций, параметр передается как объект (см. Ниже).
Public Sub AddEventListner(ByRef ControlOrForm As Object)
'Do next steps for adding listeners...
End Sub
Как проверить, была ли пользовательская форма объектом, который был передан?
Решение, которое я нашел, состоит в том, чтобы зациклить каждую пользовательскую форму в VBA.UserForms
и проверить, соответствует ли имя переданному объекту. В настоящее время это работает для моих нужд;Тем не менее, я хочу посмотреть, есть ли более надежное решение , чем в зависимости от соответствия имени?
'CHECK TO SEE IF OBJ IS A USERFORM
Private Function IsUserform(ByRef Obj As Object) As Boolean
Dim Form As Object
For Each Form In VBA.UserForms
'IF NAME MATCHES THEN IT MUST BE A USERFORM
On Error GoTo NotUserform
If Form.Name = Obj.Name Then
IsUserform = True
Exit Function
End If
Next
NotUserform:
End Function