ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 10064|回复: 16

[求助] 如何限制多个TEXTBOX的输入,使其只能输入数值?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-12-12 23:13 | 显示全部楼层 |阅读模式
我的窗体中有33个文本框文件,其中一个是输入日期,格式为2012-12-12这种,其余的只能输入数值,即数字加小数点,请问该如何控制这33个文本框文件的输入格式只能是数值呢(或者后面的32个也可以)。
我在网上搜到了一个解决方法,但是将其插入我的代码中,老是提示代码错误,连接如下:
http://www.exceltip.net/thread-28095-1-1-14725.html
哪位高手可以给解释一下,这些代码的意义,还有我觉得好像他说反了,是不是类代码和按钮的代码放反了呢

TA的精华主题

TA的得分主题

发表于 2012-12-13 00:06 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
你提供的网址代码太麻烦了,可简单点:
  1. Dim Txt() As New clsTxt

  2. Private Sub UserForm_Initialize()
  3.     Dim ctl As Control, m&
  4.     For Each ctl In Me.Controls
  5.         If TypeName(ctl) = "TextBox" Then
  6.                 If ctl.Name <> "TextBox1" Then
  7.                 m = m + 1
  8.                 ReDim Preserve Txt(1 To m)
  9.                 Set Txt(m).Txtbox = ctl
  10.             End If
  11.         End If
  12.     Next
  13. End Sub
复制代码
  1. Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) '第一个TextBox1日期限制不需要类模块
  2.     If TextBox1.Text = "" Then Exit Sub
  3.     If IsDate(TextBox1.Text) = False Then
  4.         Cancel = True
  5.         TextBox1.Text = ""
  6.     End If
  7. End Sub
复制代码
类模块clsTxt:
  1. Public WithEvents Txtbox As MSForms.TextBox

  2. Private Sub Txtbox_Change()
  3.     With CreateObject("vbscript.regexp")
  4.         .Global = True
  5.         .Pattern = "[^0-9.]+"
  6.         If .test(Txtbox.Text) Then
  7.             Txtbox.Text = .Replace(Txtbox.Text, "")
  8.         End If
  9.     End With
  10. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2012-12-13 00:09 | 显示全部楼层
第一个文本框输入日期,其他所有都只能输入数字
做了一个附件请查看:
如何限制多个TEXTBOX的输入.rar (12.15 KB, 下载次数: 955)

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-12-13 10:43 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
太好了,感谢以上两位,马上实验一下

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-12-13 15:30 | 显示全部楼层
非常感谢zhaogang1960 。好用的很。
再追问一个问题,如果我想打开窗体时,文本框保留上次输入的数值,即某一单元格的值,并且按照分节号显示,例如,我的textbox2输入-123456.78到单元格b2中,我想让下次打开窗体后,textbox2显示的是-123,456.78,我的代码为textbox2.value=format(range("b2").value,"#,###.00"),请问为什么这个代码不好用

TA的精华主题

TA的得分主题

发表于 2012-12-13 15:47 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
idn 发表于 2012-12-13 15:30
非常感谢zhaogang1960 。好用的很。
再追问一个问题,如果我想打开窗体时,文本框保留上次输入的数值,即某 ...

窗体没有记忆能力,需退出窗体时把数据记录在一个载体上面,通常记录在工作表上比较方便,请说明记录在哪一个工作表上面

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-12-13 16:42 | 显示全部楼层
谢谢zhaogang1960 的热心解答。
我已经指明了存放的工作表,如在上述代码前添加了With worksheets("suodeshui"),目前可以显示b2单元格的数值,但是文本框的格式没有按照我的要求出现分节号?

TA的精华主题

TA的得分主题

发表于 2012-12-13 17:26 | 显示全部楼层
idn 发表于 2012-12-13 16:42
谢谢zhaogang1960 的热心解答。
我已经指明了存放的工作表,如在上述代码前添加了With worksheets("suodes ...

文本框格式化和类模块中的Txtbox_Change相悖,Txtbox_Change会删除其中它认为错误的字符

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-12-13 17:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
那么应该如何解决呢,还请版主支招
如果把类模块中的改为可以输入数值、小数点和负号以及分节号,应如何修改代码

TA的精华主题

TA的得分主题

发表于 2012-12-13 17:51 | 显示全部楼层
idn 发表于 2012-12-13 17:32
那么应该如何解决呢,还请版主支招
如果把类模块中的改为可以输入数值、小数点和负号以及分节号,应如何修 ...

我不会正则表达式,实在写不出来pattern表达式

建议你另发一个求助帖

求一个保留数值、小数点和负号以及分节号的正则pattern表达式
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-23 18:37 , Processed in 0.044762 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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