首頁 > 科技

VBA類模組應用方法介紹

2021-08-08 03:05:46

VBA類模組應用方法介紹,這一點很重要

VBA中類模組是一個很重要的難點,如果沒有深入研究,通常不會涉及到,但是,想要提高程式設計方面的能力,類模組的應用,必須要學會。

當然了,既然是難點就並不容易學會。

本節介紹一個方法,如何實現單選按鈕選擇之後的一些操作。

也就是說通過類模組來實現OptionButton控制項的Click事件。

當單擊選擇按鈕之後,將把選擇內容顯示在右側窗體中。

這個示例,可實現單項選擇功能,應用十分廣泛。

預設窗體如上圖所示,什麼都沒有選擇,當選擇之後如下圖所示。

重點看一下類模組內容,其程式碼有點複雜,比較難理解,但是其理論就是建立一個事件過程。

如下圖所示:

類模組(Opts)程式碼:

Option Explicit

Public WithEvents OptObj As MSForms.OptionButton'定義按鈕物件

Public WithEvents ForObj As MSForms.UserForm'定義窗體物件

Private Sub OptObj_Click()

Dim id As Long, i As Integer

id = VBA.Mid(OptObj.Name, 13, VBA.CInt(VBA.Len(OptObj.Name) - 12))

If ForObj.Controls("OptionButton" & id).Value = True Then

ForObj.Controls("TextBox1").Value = ForObj.Controls("Label" & id).Caption

End If

For i = 1 To getCount(ForObj)

If i <> id Then

ForObj.Controls("OptionButton" & i).Enabled = False

ForObj.Controls("Label" & i).Enabled = False

End If

Next i

End Sub

上述程式碼要在一個類模組中,名稱為:Opts,模組名很關鍵,一定要和主窗體中定義的一樣,不然不能使用。後面程式碼可以看到如何使用。

窗體程式碼:

Option Explicit

Dim Opt() As Opts

Dim Forx() As Opts

Private Sub UserForm_Initialize()

Dim x As Integer

Dim xOpt As Object

x = 1

For Each xOpt In Me.Controls

If TypeName(xOpt) = "OptionButton" Then

ReDim Preserve Opt(x)

ReDim Preserve Forx(x)

Set Opt(x) = New Opts

Set Forx(x) = New Opts

Set Forx(x).ForObj = Me

Set Forx(x).OptObj = xOpt

x = x + 1

End If

Next xOpt

End Sub

上述程式碼將物件名建立為陣列形式,由於選擇項條數可能存在不確定性,所以陣列方式更加靈活。

也就是說,不管有多少個選項,此內容是不需要更改的 ,可以任意新增OptionButton控制項,而無需考慮為其定義類。


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