首頁 > 科技

VBA如何用程式碼定義按鈕事件,類模組過程定義方法就是這麼做

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 ---


IT145.com E-mail:sddin#qq.com