activex控件 新对象 ocx 初始化_请注意:多个控件必须统一响应!VBA代码中类模块大显身手...

大家好,我们今日继续讲解VBA代码解决方案的第96讲内容:利用类模块完成多个控件的统一相应。为了说明类模块的作用,我们先设计一个场景,我们在TextBox1、TextBox2、TextBox3中输入完数据后,利用文本框的Change事件使TextBox4显示其三个文本框值相加的和,需要在每一个文本框的Change事件中写上相同的重复代码,使用类模块可以简化代码。

那么什么类模块呢?类模块与窗体模块类似,只是没有可见的用户界面。可以使用类模块创建含有方法和属性代码的自己的对象。使用类模块可以创建自定义的类,使用此类作为模板创建对象。类模块包含一系列的属性,方法和事件,用来和其他对象或创建对象的代码交互。

下面看我们的实例讲解:有四个文本框,其中三个用来输入数据,一个用来显示其他三个文本框相加后的合计数,首先打开VBE,插入一个类模块建立一个类,类模块的名字就是类的名字修改为"mynzcmds",在类模块中输入下面的代码:

Public WithEvents mynzcmd As MSForms.TextBox

代码解析:

使用Public语句声明变量mynzcmd是用来响应由TextBox对象触发的事件的对象变量。

我们还需要补充一个概念,就是窗体的Initialize事件。Initialize 事件即初始化事件,任何窗体生命周期的第一个事件都是Initialize。只要在项目中使用了窗体的名称,在创建实际窗口及其控件之前,都会发生initialize事件。可以在initialize事件处理过程中正确地初始化窗体变量,它在Load事件之前发生。

在窗体的Initialize事件中写入下面的代码:

Dim mynzcol As New Collection

Private Sub UserForm_Initialize()

Dim i As Integer

Dim mynzmyc As mynzcmds

For i = 1 To 3

Set mynzmyc = New mynzcmds

Set mynzmyc.mynzcmd = Me.Controls("TextBox" & i)

mynzcol.Add mynzmyc

Next

Set mynzmyc = Nothing

End Sub

代码解析:

第1行代码在模块顶部声明变量mynzcol的类型为集合。

第5行到第9行代码,将窗体中的三个文本框赋给mynzcol集合。

在类模块中写入下面的代码:

Private Sub mynzcmd_Change()

Dim i As Integer

Dim mynzDval As Double

For i = 1 To 3

mynzDval = mynzDval + Val(UserForm2.Controls("TextBox" & i))

UserForm2.TextBox4.Value = mynzDval

Next

End Sub

代码解析:

窗体中的3个文本框统一的Change事件,当任何一个文本框中的数据发生变化时,所有文本框相加的合计数显示在最后一个文本框中。

代码截图:

c42afb2cde82104b126f8d9bc73a0940.png

类模块截图:

af4b3814d770ef63e933a89b544e1095.png

代码运行:

62b70bf1973b8105b9ef49529b2470bf.png

当录入数字时:求和结果会实时改变

253c4a916a918ab9caca0f77164b7624.png

今日内容回向:

1 什么是类模块?

2 上述不用类模块可否能实现呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值