2013-01-09 18 views
0

所以我試圖讓任何時候任何用戶窗體顯示在工作簿中的事件啓動。他們都會做同樣的事情,但我不想爲每個UserFormX.Show編碼相同的活動。試圖讓VBA處理任何形式的事件顯示

我讀過關於UserForm_Activate()UserForm_Initialize()並瞭解它們是如下所示。

Private Sub UserForm_Activate() 
    ''Do some stuff 
End Sub 

我也明白UserForm應該是表格本身的名稱。有沒有辦法讓這種情況發生在任何被激活/顯示的用戶窗體上?

感謝

+0

如果他們做同樣的事情,爲什麼你需要多個用戶表單? – scott

+0

你可以嘗試[this](http://spreadsheetpage.com/index.php/tip/handle_multiple_userform_buttons_with_one_subroutine/)技術,但改變commandbuttons給用戶表單,但我從來沒有在用戶表單上測試過它 – scott

+0

@scott他們是爲了不同的事情,但我希望他們在相同的位置,或移動到屏幕上的某個地方。這種東西我通常必須操縱每個表單的屬性,或者在每個表單初始化時添加代碼。這就是我的意思。抱歉。 – JHStarner

回答

0

不太你所追求的,但它可能是你可以得到的最接近。

Microsoft Forms 2.0 Object Library

添加引用在標準模塊創建Sub處理常用操作

Sub FormInitialize(frm As MSForms.UserForm) 
    With frm 

     ' do stuff 

    End With 
End Sub 

在每種形式模塊創建標準Initialize event

Private Sub UserForm_Initialize() 
    FormInitialize Me 
End Sub 

還是要爲每個表單創建一個Sub,但至少它總是相同的,並且只有一個實際初始化邏輯的副本。

0

你可以從每個表單的Initialize事件調用主線代碼中的例程嗎?

Private Sub UserForm_Initialize() 
    Call MainCode_FormHandler(.Me) 
End Sub 

,並在主代碼:

Public Sub MainCode_FormHandler(oForm as Form) 
    With oForm 
     ' Set form's properties here 
    End With 
End With 

你可以包括,如果您需要確定哪些形式已經通過了測試oForm.Tag邏輯。在窗體的屬性對話框中設置窗體的標籤。