《VBA中类的解读及应用》教程【10165646】是我推出的第五套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。
类,是非常抽象的,更具研究的价值。随着我们学习、应用VBA的深入,有必要理解这些抽象的理论知识。对象,类,过程,方法,属性,事件,接口,接口如何实现等等。掌握了这些理论,不仅对于VBA这种寄生语言的实质有所深入的理解,也对自然界的很多事物将同样有所感悟。目前,这套教程程序文件已经通过32位,64位两种office系统测试。
这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:VBA中类的解读及应用第十六讲:利用类方法和事件,让文本框在激活时改变颜色(中)
【分享成果,随喜正能量】最好的修行,用心甘情愿的态度,过随遇而安的生活,怀有一颗慈悲、感恩的心灵,修行的路上,处处都吉祥。
第十六讲 利用类方法和事件,让文本框在激活时改变颜色(中)
大家好,在上一讲中我们讲了利用类方法和事件,实现让文本框在激活时改变颜色的第一部分代码:类模块的建立。我们今天继续讲解,这讲讲的是窗体的代码。
3 窗体的构建及代码
为了实现上述的目的,我们首先要构建一个窗体,由文本框和按钮组成:
窗体的代码如下:
Dim mytexbox() As New mytebox
Private Sub CommandButton1_Click()
If TextBox2.Text = "" Then
t1 = 0
Else
t1 = TextBox2.Text + 0
End If
If TextBox3.Text = "" Then
T2 = 0
Else
T2 = TextBox3.Text + 0
End If
If TextBox4.Text = "" Then
T3 = 0
Else
T3 = TextBox4.Text + 0
End If
TextBox1.Text = t1 + T2 + T3
End Sub
Private Sub CommandButton2_Click()
For i = 1 To 4
With UserForm7.Controls("TextBox" & i)
.ForeColor = 0 '(黑色)
.BackColor = 16777215 ' (白色)
.Text = ""
End With
Next
End Sub
Private Sub UserForm_Initialize()
For Each myctl In Me.Controls
If TypeName(myctl) <> "CommandButton" And TypeName(myctl) <> "Label" Then
yy = TypeName(myctl)
m = m + 1
ReDim Preserve mytexbox(1 To m)
Set mytexbox(m) = New mytebox '创建一个新的mycdl类对象
Set mytexbox(m).mBOX = myctl '设置关联
End If
Next
End Sub
代码截图:
4 窗体代码的讲解
在上面的语句中有两个按钮的事件,及窗体的构建代码。
1) 窗体的构建函数:
Private Sub UserForm_Initialize()
For Each myctl In Me.Controls
If TypeName(myctl) <> "CommandButton" And TypeName(myctl) <> "Label" Then
yy = TypeName(myctl)
m = m + 1
ReDim Preserve mytexbox(1 To m)
Set mytexbox(m) = New mytebox '创建一个新的mycdl类对象
Set mytexbox(m).mBOX = myctl '设置关联
End If
Next
End Sub
上述代码中我们先对每一个控件进行循环,如果是文本框控件,那么将这个文本框定义为新的类并设置类与mBOX 类事件对象的关联。以便让文本框响应我们需要的动作。
2)“求和”按钮是把后三个的文本框值相加。
3) “重置”按钮是清空文本框内容,包括颜色设置地复位。
今日内容回向:
1 在窗体的构建中要解决什么问题?
2 如何让窗体的实际对象响应已经定义了类事件的对象?
本讲内容参考程序文件:VBA-CLASS(1-28).xlsm
我20多年的VBA实践经验,全部浓缩在下面的各个教程中: