【分享成果,随喜正能量】 人生建议:认识的人越少越好,不要沾染不适合自己的圈子,知己一两个就足够,沉住气,别去巴结谁,别人的奇迹和你无关,得不到的不要去追,让自己生气的东西永远别搭理。。

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

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

这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是第11讲:限制文本框的输入。

文本框输入内容(限制文本框的输入)(1)

第十一讲 限制文本框的输入,使其只能输入数值(下)

(接上讲)

4 代码的运行过程及讲解

1) 窗体文件的构建

Dim Txt() As New mytext

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

代码讲解:

① Dim Txt() As New mytext这句代码定义了一个动态数组变量为类。

② 在窗体的构建中,要对每一个控件进行判断,如果是"TextBox"类型的控件,那么就将此控件定义为Txt(m).Txtbox,而Txt(m).Txtbox中 txt(m) 定义为mytext类的对象,txtbox是这个对象的事件。Set Txt(m).Txtbox = myctl就是让myctl控件享有我们定义对象的事件。

③ ReDim Preserve Txt(1 To m),这句是一个动态数组的重新定义过程,当m值增加后,在不破坏原数据的基础上要重新定义这个动态数组。增加了一个类的对象。

2) 当我们在文本框录入数据时,由于文本框是实例化类后的对象,所以这个对象将要响应mytext类的Txtbox事件。

3) 在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

代码讲解:

① 上述代码中引用CreateObject("VBScript.regexp").然后就可以利用正则运算了。

RegExp对象是VBScript中用于提供简单的正则表达式支持的对象。VBScript中所有和正则表达式有关的属性和方法都与这个对象有关联。

这个对象有三个属性和三个方法:

属性: Global、IgnoreCase、Pattern

方法: Execute、Replace、Test

这讲中仅对本讲用到的属性和方法做讲解,其他的还请有兴趣的朋友阅读相关的资料:

a Global属性:负责设置或返回一个Boolean值,指明模式是匹配整个字符串中所有与之相符的地方还是只匹配第一次出现的地方。如果Global属性的值是True,那就会对整个字符串进行查找;否则就不会。默认值是False.

b Pattern属性:设置或返回用于搜索的正则表达

c Replace方法:这个方法用于替换在正则表达式搜索中找到的文本代码

object.Replace(string1, string2)

对象只能是RegExp对象

string1:这是发生替换的文本字符串,必需的

string2:这是用于替换的文本字符串,必需的

Replace方法返回一份RegExp.Pattern被string2替换后的string1的副本。如果字符串中没有发生匹配,那么就会返回没有任何改变的string1。

d Test方法Test方法对字符串执行正则表达式搜索,并返回一个布尔值说明匹配是否成功代码

object.Test(string)

object : 是RegExp对象

string:正则表达式搜索的执行对象,必需的

如果匹配成功,Test方法返回True;否则返回False。这适用于判断字符串是否含有某个模式。

②Txtbox.Text = .Replace(Txtbox.Text, "")

代码在执行过程中要对录入的值进行判断如果不是数字,就用空来代替

4) 当点击推出按钮或者是关闭窗口时就直接END,虽然比较武断,但很实用。

5 代码的运行效果

文本框输入内容(限制文本框的输入)(2)

文本框输入内容(限制文本框的输入)(3)

文本框输入内容(限制文本框的输入)(4)

由于正则的作用,是只能输入数字的。

今日内容回向:

1 如何理解正则函数?

2 在窗体的构建构成中,执行了哪些动作?

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

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

文本框输入内容(限制文本框的输入)(5)

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

① 7→1→3→2→6→5或者7→4→3→2→6→5。

② 7→8

各套教程内容简介:

第7套教程(共三册):《VBA之EXCEL应用》:是对VBA基本的讲解

第1套教程(共三册):《VBA代码解决方案》:是入门后的提高教程

第4套教程(16G):VBA代码解决方案之视频(第一套的视频讲解)

第3套教程(共两册):《VBA数组与字典解决方案》:是对数组和字典的专题讲解

第2套教程(共两册):《VBA数据库解决方案》:是对数据库的专题讲解

第6套教程(共两册):《VBA信息获取与处理》:讲解VBA的网络及跨程序应用

第5套教程(共两册):VBA中类的解读和利用:类及接口技术的讲解

第8套教程(共三册):VBA之Word应用(最新教程):word中VBA的利用

,