亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

VBA:在UserForms上使用WithEvents

VBA:在UserForms上使用WithEvents

VBA:在UserForms上使用WithEvents我有一個Word用戶表單,包含60多種不同類型的控件。我想在每次觸發control_change事件時評估表單并更改表單的提交按鈕的啟用狀態。但是,我真的不想在更改事件處理程序上編寫和維護60。
查看完整描述

3 回答

?
千萬里不及你

TA貢獻1784條經驗 獲得超9個贊

您可以創建一個事件接收器類,它將包含特定類型的所有控件的事件處理代碼。


例如,創建一個名為的類TextBoxEventHandler,如下所示:


Private WithEvents m_oTextBox as TextBox


Public Property Set TextBox(ByVal oTextBox as TextBox)

    Set m_oTextBox = oTextBox

End Property


Private Sub m_oTextBox_Change()

    ' Do something

End Sub

現在,您需要為表單上的相應類型的每個控件創建并連接該類的實例:


Private m_oCollectionOfEventHandlers As Collection


Private Sub UserForm_Initialise()


    Set m_oCollectionOfEventHandlers = New Collection


    Dim oControl As Control

    For Each oControl In Me.Controls


        If TypeName(oControl) = "TextBox" Then


            Dim oEventHandler As TextBoxEventHandler

            Set oEventHandler = New TextBoxEventHandler


            Set oEventHandler.TextBox = oControl


            m_oCollectionOfEventHandlers.Add oEventHandler


        End If


    Next oControl


End Sub

請注意,您需要將事件處理程序實例添加到集合的原因只是為了確保它們仍然被引用,因此在您完成它們之前不會被垃圾收集器丟棄。


顯然,這種技術可以擴展到處理其他類型的控制。您可以為每種類型分別設置事件處理程序類,也可以為需要處理的每種控件類型使用一個具有成員變量(以及關聯的屬性和事件處理程序)的類。


查看完整回答
反對 回復 2019-08-28
  • 3 回答
  • 0 關注
  • 1047 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號