VBA中类的解读及应用》教程【10165646】是我推出的第五套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。

类,是非常抽象的,更具研究的价值。随着我们学习、应用VBA的深入,有必要理解这些抽象的理论知识。对象,类,过程,方法,属性,事件,接口,接口如何实现等等。掌握了这些理论,不仅对于VBA这种寄生语言的实质有所深入的理解,也对自然界的很多事物将同样有所感悟。目前,这套教程程序文件已经通过32位,64位两种office系统测试。

这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:VBA中类的解读及应用第十五讲:利用类方法和事件,让文本框在激活时改变颜色(上)

VBA中类的解读及应用第十五讲:利用类方法和事件,让文本框在激活时改变颜色(上)_VBA



【分享成果,随喜正能量】身心是我们修行的代表,你是不是真修行,修得怎么样,一看你的相、看你的身体就知道了。你的功夫就在你脸上、就在你行为上,你怎么能骗人?


念佛的人,功夫从从相貌上看,从体质上看。真正修行的人念佛功夫得力,相貌就改变了,身体就强壮了!确实,我们的相貌会随着我们修行的功夫转变。


你一天念几万声佛号,每天读几部经,你的心地清净慈悲,没有恶念,你的相貌自然就会变成慈祥,你功夫愈深,相貌也愈好。你这修行功夫骗不了人,一看就晓得。。

第十五讲 利用类方法和事件,让文本框在激活时改变颜色(上)

大家好,今天继续讲解类的方法和事件。到这一讲,我们基本已经了解了如何利用类,如何利用类的事件。

如果想利用类,必须在类模块中建立类,类的名称是可以改为自己需要的名称;建立类后还要实例化类,把类转化为一个实体对象,如果不对类进行实例化,是没有任何意义的;一般情况下,可以在窗体的构建中进行类的实例化;如果要让这个实体对象响应类的事件,那么要在类的声明中进行对象的声明,在类模块中进行事件的响应,在窗体模块中进行对象的必要关联。

下面仍是以实例为基础,进行类模块实际问题的讲解。


实例:在窗体中,让每一个文本框在激活时发生颜色的改变。


思路的分析:让窗体中的文本框关联上同一个类,可以执行统一的类事件。在窗体中把必要的文本框和这个类及将执行响应的类事件进行关联。


在这讲及其后的几讲中,我们讲解上述需求的实现过程:


1 搭建类模块及类事件

我们建立一个类模块mytebox,并在类模块中声明一个响应事件的对象Mbox,作为我们要干预文本框的一个对象集合。


Public WithEvents mBOX As MSForms.TextBox

Private Sub mBOX_Change()

m = mBOX.Text

If m = "" Then m = 0

If m > 100 Then

MsgBox ("已经超过100"): DoEvents

End If

End Sub

Private Sub mBox_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

For i = 2 To 4

With UserForm7.Controls("TextBox" & i)

.ForeColor = 0 '(黑色)

.BackColor = 16777215 ' (白色)

TT = .Text

End With

Next

mBOX.BackColor = 16711680 ' (蓝色)

mBOX.ForeColor = 16777215 '白色

End Sub


代码截图:

VBA中类的解读及应用第十五讲:利用类方法和事件,让文本框在激活时改变颜色(上)_Text_02




2 代码的讲解及窗体初始化效果

1) 在上述代码中Public WithEvents mBOX As MSForms.TextBox是对要响应类对象事件的对象进行了声明。

2) 上面的对象共有两个事件,其一是mBOX_Change其二是mBox_MouseDown

3) 我们先看第一个事件mBOX_Change。当对象发生改变时,将执行下面的操作:

m = mBOX.Text

If m = "" Then m = 0

If m > 100 Then

MsgBox ("已经超过100"): DoEvents

首先要把mBOX.Text的值提取出来,进行判断,如果是空值按0处理,如果是大于100将进行提示:已经超过100.

4) mBox_MouseDown过程。

For i = 2 To 4

With UserForm7.Controls("TextBox" & i)

.ForeColor = 0 '(黑色)

.BackColor = 16777215 ' (白色)

TT = .Text

End With

Next

mBOX.BackColor = 16711680 ' (蓝色)

mBOX.ForeColor = 16777215 '白色


对于textbox的第2到第4个,首先把每个文本框进行初始化,然后对于激活状态的文本框进行着色设置。背景为蓝色,前景为白色。


运行初始化时的窗体的界面:

VBA中类的解读及应用第十五讲:利用类方法和事件,让文本框在激活时改变颜色(上)_VBA_03



VBA中类的解读及应用第十五讲:利用类方法和事件,让文本框在激活时改变颜色(上)_VBA_04


今日内容回向:

1 类的事件是如何被对象响应的?

2 类事件被声明后,如何才能应用?


(待续)


本讲内容参考程序文件:VBA-CLASS(1-28).xlsm









VBA中类的解读及应用第十五讲:利用类方法和事件,让文本框在激活时改变颜色(上)_Text_05



我20多年的VBA实践经验,全部浓缩在下面的各个教程中




VBA中类的解读及应用第十五讲:利用类方法和事件,让文本框在激活时改变颜色(上)_文本框_06