文本框只能输入数值的实现

文本框只能输入数值的实现

【分享成果,随喜正能量】 沟通三原则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的利用

发布于 2021-07-22 17:43