Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1991|回复: 1

[已解决]求教各位老师关于类模块知识的问题。

[复制链接]
发表于 2014-1-19 09:09 | 显示全部楼层 |阅读模式
本帖最后由 suye1010 于 2014-1-19 17:00 编辑

求教老师:窗体中有4个文字框(TextBox),我想对它们在内容输入时,做些限制(比如修改文字框的值时执行TextBox对象的Change事件过程),问题是对每一个文字框进行设置的话,代码多次重复,所以希望能通过类模块或者其他的循环语句进行编辑,我本人对类模块不会,正在学习中。还请老师给予帮助。谢谢!
附代码如下:

'修改第一个文本框的值时执行,此过程是TextBox1对象的Change事件过程
Private Sub TextBox1_Change()
    If Len(TextBox1) > 0 Then  '如果文本框有字符
        '如果文本框的右边一位是0到9的数字,以及“.?/\<>,();'@#$%^&!、。_+:""|{}[]-”之类的标点符号
        If Right(TextBox1, 1) Like "[0-9.?/\<>,();'@#$%^&!、,。_+:""|{}]" Or _
        Right(TextBox1, 1) = "[" Or Right(TextBox1, 1) = "]" Or Right(TextBox1, 1) = "-" Then
            MsgBox "请不要输入数字和标点。", vbOKOnly + vbInformation, "友情提示" '提示用户
            TextBox1.Value = Left(TextBox1, Len(TextBox1) - 1)    '删除右边一位
        End If
    End If
End Sub
最佳答案
2014-1-19 16:59
窗体中的代码:
  1. Dim TBS(1 To 4) As New TexboxChangeClass
  2. Private Sub UserForm_Initialize()
  3. For i = 1 To 4
  4.     Set TBS(i).TB = Me.Controls("Textbox" & i)
  5. Next i
  6. End Sub
复制代码
2. 类模块TexboxChangeClass中的代码
  1. Public WithEvents TB As MSForms.TextBox
  2. Private Sub TB_Change()
  3.     If Len(TB) > 0 Then  '如果文本框有字符
  4.         '如果文本框的右边一位是0到9的数字,以及“.?/\<>,();'@#$%^&!、。_+:""|{}[]-”之类的标点符号
  5.         If Right(TB, 1) Like "[0-9.?/\<>,();'@#$%^&!、,。_+:""|{}]" Or _
  6.         Right(TB, 1) = "[" Or Right(TB, 1) = "]" Or Right(TB, 1) = "-" Then
  7.             MsgBox "请不要输入数字和标点。", vbOKOnly + vbInformation, "友情提示" '提示用户
  8.             TB.Value = Left(TB, Len(TB) - 1)    '删除右边一位
  9.         End If
  10.     End If
  11. End Sub
复制代码
关于类模块应用的实例.zip (14.45 KB, 下载次数: 9)

关于类模块应用的实例.rar

13.78 KB, 下载次数: 2

发表于 2014-1-19 16:59 | 显示全部楼层    本楼为最佳答案   
窗体中的代码:
  1. Dim TBS(1 To 4) As New TexboxChangeClass
  2. Private Sub UserForm_Initialize()
  3. For i = 1 To 4
  4.     Set TBS(i).TB = Me.Controls("Textbox" & i)
  5. Next i
  6. End Sub
复制代码
2. 类模块TexboxChangeClass中的代码
  1. Public WithEvents TB As MSForms.TextBox
  2. Private Sub TB_Change()
  3.     If Len(TB) > 0 Then  '如果文本框有字符
  4.         '如果文本框的右边一位是0到9的数字,以及“.?/\<>,();'@#$%^&!、。_+:""|{}[]-”之类的标点符号
  5.         If Right(TB, 1) Like "[0-9.?/\<>,();'@#$%^&!、,。_+:""|{}]" Or _
  6.         Right(TB, 1) = "[" Or Right(TB, 1) = "]" Or Right(TB, 1) = "-" Then
  7.             MsgBox "请不要输入数字和标点。", vbOKOnly + vbInformation, "友情提示" '提示用户
  8.             TB.Value = Left(TB, Len(TB) - 1)    '删除右边一位
  9.         End If
  10.     End If
  11. End Sub
复制代码
关于类模块应用的实例.zip (14.45 KB, 下载次数: 9)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-16 00:26 , Processed in 0.217548 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表