【分享成果,随喜正能量】 沟通三原则1.换位思考,而不要固执己见。从本质上说,沟通不是说话,而是改变行动。真正的沟通者关注沟通的效果。在沟通时,重要的不是你说了什么,而是对方理解了什么,所以对方的反馈非常重要。2.面对问题,而不要回避矛盾。3.解决问题,而不是证明对方的错误。
《VBA中类的解读及应用》教程是我推出第五套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。
类,是非常抽象的,更具研究的价值。随着我们学习、应用VBA的深入,有必要理解这些抽象的理论知识。对象,类,过程,方法,属性,事件,接口,接口如何实现等等。掌握了这些理论,不仅对于VBA这种寄生语言的实质有所深入的理解,也对自然界的很多事物将同样有所感悟。目前,这套教程程序文件已经通过32位,64位两种office系统测试。
这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是第10讲:文本框只能输入数值的实现。
第十讲 限制文本框的输入,使其只能输入数值(上)
大家好,我们今天继续讲解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实践经验,全部浓缩在下面的各个教程中,教程学习顺序:
① 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的利用
,