VBA类模块应用方法介绍,这一点很重要
VBA中类模块是一个很重要的难点,如果没有深入研究,通常不会涉及到,但是,想要提高编程方面的能力,类模块的应用,必须要学会。
当然了,既然是难点就并不容易学会。
本节介绍一个方法,如何实现单选按钮选择之后的一些操作。
也就是说通过类模块来实现OptionButton控件的Click事件。
当单击选择按钮之后,将把选择内容显示在右侧窗体中。
这个示例,可实现单项选择功能,应用十分广泛。
默认窗体如上图所示,什么都没有选择,当选择之后如下图所示。
重点看一下类模块内容,其代码有点复杂,比较难理解,但是其理论就是建立一个事件过程。
如下图所示:
类模块(Opts)代码:
Option ExplicitPublic 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 iEnd Sub
上述代码要在一个类模块中,名称为:Opts,模块名很关键,一定要和主窗体中定义的一样,不然不能使用。后面代码可以看到如何使用。
窗体代码:
Option ExplicitDim Opt() As OptsDim Forx() As OptsPrivate Sub UserForm_Initialize()Dim x As IntegerDim xOpt As Objectx = 1For 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 IfNext xOptEnd Sub
上述代码将对象名建立为数组形式,由于选择项条数可能存在不确定性,所以数组方式更加灵活。
也就是说,不管有多少个选项,此内容是不需要更改的 ,可以任意添加OptionButton控件,而无需考虑为其定义类。
赞 (0)