Вы можете создать обработчик событий _MouseDown
для каждого кадра в форме или, если у вас много кадров, вы можете создать общий класс обработчика событий
Создать модуль класса (например, с именем cUserFormEvents
)
Public WithEvents Frme As MSForms.frame
Public frm As UserForm
Private Sub Frme_MouseDown( _
ByVal Button As Integer, _
ByVal Shift As Integer, _
ByVal X As Single, _
ByVal Y As Single)
' Put your event code here
MsgBox Frme.Caption
End Sub
Объявите коллекцию для своих Рамок
Dim mcolFrames As New Collection
Включите этот код в инициализацию формы
Private Sub UserForm_Initialize()
Dim ctl As MSForms.Control
Dim clsEvents As cUserFormEvents
'Loop through all controls on userform
For Each ctl In Me.Controls
'Only process Frames
If TypeOf ctl Is MSForms.frame Then
'Instantiate class module and assign properties
Set clsEvents = New cUserFormEvents
Set clsEvents.Frme = ctl
Set clsEvents.frm = Me
'Add instance to collection
mcolFrames.Add clsEvents
End If
Next ctl
End Sub
Теперь Frme_MouseDown
будет выполняться при MouseDown в любом фрейме формы. Доступ к конкретному кадру с помощью Frme