《VBA中类的解读及应用》教程【10165646】是我推出的第五套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。
类,是非常抽象的,更具研究的价值。随着我们学习、应用VBA的深入,有必要理解这些抽象的理论知识。对象,类,过程,方法,属性,事件,接口,接口如何实现等等。掌握了这些理论,不仅对于VBA这种寄生语言的实质有所深入的理解,也对自然界的很多事物将同样有所感悟。目前,这套教程程序文件已经通过32位,64位两种office系统测试。
这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:VBA中类的解读及应用第十讲:限制文本框的输入,使其只能输入数值(上)
【分享成果,随喜正能量】我们平常说祝福未来的精彩,其实是活好今天的信心、细水长流的日子、踏实冷静的面对和努力去呈现的一个个体的价值、个体的精神、个体的风采在群体当中的一种融合、担当和责任。。
第十讲 限制文本框的输入,使其只能输入数值(上)
大家好,我们今天继续讲解VBA中类的解读及应用,从这讲开始我们开始各种实例的学习,在实例学习的过程中我们要逐渐加深对概念的理解,对于几个重要的概念,我们再次回顾一下。
1)类CLASS: 类是对象的“灵魂”。对象可以是任何事物,而类不会做任何事情,也不会占用内存,只有当类成为对象并使用Set语句和New关键字实例化为具体对象后,才能做事情并占用内存。
2) 类的属性:用来描述类。有两种声明方案,一种是在类中直接声明,一种是用Property Let/Set/Get语句声明。
3)类的方法:在类中公共的Sub和Function。
4)类模块:类模块由属性和方法组成,类本身类似于名词;属性可以当作形容词,用来描述类;方法则为动词,执行操作。
5)类的实例化:建立新的类对象。注意这个对象不一定是实际意义上的实体,但可以作为实体来对待。
6)声明类的事件:用Event进行声明,但只是声明。
7)声明类实例化对象变量:用WithEvents
对于上面的概念要理解,理解后我们要利用上面的知识点来处理我们实际遇到的问题了。
1 需要完成的实例内容
本讲的实例要实现利用类模块,完成文本框录入只能是数字的校验,如果录入的不是数字那么将被取消录入。
2 完成实例的思路分析
在这个实例中,我们要完成对若干个文本框的校验,那么可以在窗体加载时把这些文本框设置成同一个类,然后让这个类共同响应一个类对象的事件,这个事件就是判断输入的值是否为数字。这样我们就可以达到目的了。
3 完成实例的代码实现
1) 先新建一个类mytext,在这个类中要声明一个类的对象变量,这个对象是用来响应事件的。
Public WithEvents Txtbox As MSForms.TextBox
Private Sub Txtbox_Change()
With CreateObject("vbscript.regexp")
.Global = True
.Pattern = "[^0-9.]+"
If .tesT(Txtbox.Text) Then
Txtbox.Text = .Replace(Txtbox.Text, "")
End If
End With
End Sub
在上述代码中Txtbox是一个类对象的变量,这个变量要响应的是Txtbox_Change事件。
2) 搭建一个窗体,上面有若干个文本框。同时录入代码
代码:
Dim Txt() As New mytext
Private Sub CommandButton1_Click()
End
End Sub
Private Sub UserForm_Initialize()
For Each myctl In Me.Controls
If TypeName(myctl) = "TextBox" Then
m = m + 1
ReDim Preserve Txt(1 To m)
Set Txt(m).Txtbox = myctl
End If
Next
End Sub
Private Sub UserForm_Terminate()
End
End Sub
代码截图:
上述代码中声明了一个类,同时把若干个文本框借助于动态数组,放到了我们期望的类对象中。这样在代码运行中就可以全部响应类的事件了。
由于篇幅的关系,代码的讲解和运行在下一讲。
今日内容回向:
1 属性、事件、方法、类、类模块是如何定义的?
2 让文本框响应同一个事件的思路是什么?
本讲内容参考程序文件:VBA-CLASS(1-28).xlsm
我20多年的VBA实践经验,全部浓缩在下面的各个教程中: