2011-09-19 36 views

回答

2

您可以創建一個_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 

包括此代碼在您的形式initialistion

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

+1

遲到+1。我現在以幾種不同的形式使用它,並且它工作得很好。 – Roy

+0

+1我使用相同的方法在PowerPoint用戶窗體上爲mousedown創建mouseEventListener,而不是在窗體內的每個框架上創建mouseEventListener。完美工作。 – Skovly

相關問題