涉及到事件就必須要對類模組進行一個清楚的認識,模組是一個難掌握的部分,當然也是十分有用的部分,如果不是對程式設計有一定的理解,相對來說學會是有點困難。本節主要介紹,如何自
2021-07-29 03:17:20
涉及到事件就必須要對類模組進行一個清楚的認識,模組是一個難掌握的部分,當然也是十分有用的部分,如果不是對程式設計有一定的理解,相對來說學會是有點困難。
本節主要介紹,如何自己定義一個類來進行按鈕事件的過程。
也就是說,通常在窗體中插入一個按鈕,系統就自動為按鈕定義了許多事件,但那些事件都是空的,需要在VBE編輯窗體中進行編碼,然後才能執行。
此文是在編碼中進行事件整個過程的定義。
具體看如下示例截圖,有些寫不清楚的地方,可以在圖中找到答案。
下圖為執行後的窗體部分,可以看到有一個文字標籤和一個按鈕控制項。
我們的重點在按鈕上。當單擊按鈕後,出現的內容就是一個事件過程,這個過程怎麼生成,就是本節的內容。
下圖為單擊按鈕後彈出一個新的窗體,這個窗體是預先做好的,不是事件內容,事件執行的內容只是彈出這個窗體。當然了,也可以在事件中編寫生成這個窗體以及窗體內容的過程,但那樣會顯得太高階了,這裡就不寫了。
下面進入正題,程式碼分析。
程式碼是整個過程的靈魂,沒有靈魂就如同沒有思想的軀體。所以,一定要看如下的程式碼。
第一步:
首先新建一個窗體,雙擊窗體,複製如下程式碼進去。
Dim Cbtn As New BtnClick '定義Cbtn 一個類名
Private Sub UserForm_Initialize()
Dim ClickBtn As Object '定義一個物件名
Set ClickBtn = Me.CommandButton1 '給物件名關聯按鈕物件
Cbtn.init ClickBtn '關聯BtnClick類
End Sub
每一行都有解釋,就不一一介紹了,很明顯的說明。
第二步:
新建一個類模組,複製如下程式碼到類模組。
'聲明一個MSForms.CommandButton物件變數
Private WithEvents btnObj As MSForms.CommandButton
'定義一個過程 過程名為init
Public Sub init(ctl As MSForms.CommandButton)
Set btnObj = ctl '過程功能:把物件參數ctl傳遞給btnObject變數
End Sub
Private Sub btnObj_Click() '定義btnObj物件的Click事件過程
'------------ 這裡寫事件過程語句 ----------------
MsgBox "這是一個按鈕事件!"
UserForm2.Show
End Sub
第三步:
修改類模組名為:BtnClick
不修改也可以,但是你什麼結果也不會看到。
類模組名和第一步裡第一行程式碼有一個關聯,至於什麼關聯,看一下就知道了。
嚴格來說第三步才是第二步,為什麼這麼寫呢,就是為了說明一點,編碼沒有嚴格順序,但是有嚴格的規則限制。
只要遵守編碼規則,任何順序都可以顛覆。
第四步:
運行Form1表單,就可以實現按鈕事件的整個過程了。
如果想改變按鈕事件可以在第二步的第8行開始寫自己的程式碼,無論怎麼寫都不會改變按鈕事件已經生成這件事情。
最後
至於如何新建窗體和按鈕控制項,新建類模組的方法,可以在VBE裡自己完成。
類模組裡完成的功能是十分強大的,VBA程式設計中的很多內容都可以寫到類模組中,以後會不斷更新一些其它事件定義新建方法,大同小異,當然了本節就是基礎,只有把基礎學會了,才能夠更上一層樓,不是嗎?
歡迎收藏、關注
---- END ---
相關文章
涉及到事件就必須要對類模組進行一個清楚的認識,模組是一個難掌握的部分,當然也是十分有用的部分,如果不是對程式設計有一定的理解,相對來說學會是有點困難。本節主要介紹,如何自
2021-07-29 03:17:20
如果一款手機要想達到全面屏的效果,核心點就在於如何隱藏前置攝像頭及諸多感測器。為此,各大品牌提出了一系列無限接近全面屏的解決方案。水滴屏,彈出式攝像頭、改變攝像頭的位
2021-07-29 03:16:55
看多了讓人眼花繚亂的側透機箱之後,不少玩家開始感覺到厭倦,轉向追求相對低調的靜音主機。其實在很久以前,電腦機箱大都是那種外觀看上去相對方正而且接近全封閉式的大鐵盒子,靜
2021-07-29 03:16:16
7月28日,蘋果公司對外公佈2021財年第三財季業績報告。財報顯示,蘋果公司第三財季淨營收為814億美元,與2020年同期相比同比增長超過36%,創下了歷史新紀錄。而縱觀整份資料可以發
2021-07-29 03:16:05
近日,有媒體報道稱,華為智慧駕駛總裁蘇箐被免職。一時之間引來大家猜測無數,對此,華為官方表示稱,這是因為蘇箐在外部活動針對特斯拉發表了不當言論,造成了不良影響。事實上,這個不
2021-07-29 03:16:00
如果你對其中興 Axon 20感到驚訝,那絕對是因為它是第一款在螢幕下配備攝像頭的手機。當然,我們已經可以說現在這不足為奇了,因為新的中興 Axon 30 5G已經正式釋出,並在這引人注
2021-07-29 03:15:53