Office中国论坛/Access中国论坛

标题: 求只能输入有一定规则数字的文本框 [打印本页]

作者: fnsmydyang    时间: 2008-12-19 21:28
标题: 求只能输入有一定规则数字的文本框
求大家帮我解决一文本框输入数字问题,不胜感激。
文本框的输入规则:
1、只能输入数字和点,但点不能出现在第一位和最后一位,如果出现则自动补零。
2、第一位不能为零,如果输入后,自动去掉,例如输入了030,输入完后自动去0成为30
作者: Henry D. Sy    时间: 2008-12-19 22:51
没有测试,你自己测试一下看看。再说

Private Sub Text0_Change()
    Dim Byt, LastBit
    If Not Len(Me.Text0.Text) = 0 Then
        Byt = Right(Me.Text0.Text, 1)
        LastBit = Asc(Byt)
        If LastBit < 48 Or LastBit > 57 Then
            If LastBit <> 46 Then
                MsgBox "Enter The Number Or Point Only"
                SendKeys "{BS}"
            End If
        End If
    End If
End Sub

Private Sub Text0_LostFocus()
    Dim FirstBit As String
    Dim LastBit As String
    Dim str As String
    If Not IsNull(Me.Text0) Then
        str = Me.Text0
        FirstBit = Left(str, 1)
        LastBit = Right(str, 1)
        If FirstBit = "0" Or FirstBit = "." Then
            Me.Text0 = Mid(str, 2)
            str = Me.Text0
        End If
        If LastBit = "." Then
            Me.Text0 = Left(str, Len(str) - 1) & "0"
        End If
    End If
End Sub

作者: Henry D. Sy    时间: 2008-12-20 10:10
第一个字符输入“.”IsNumeric 返回假
作者: tzh1600    时间: 2008-12-20 10:22
晕,怎么感觉就是一个固定数字格式,小数点固定位数
输入.56不就自动变成0.56了吗
输入56.不就自动变成56.00了吗
输入其他文本就提示错误
还要代码吗?
作者: fnsmydyang    时间: 2008-12-20 20:07
感谢各位老师指点与辩论,有启发,www.office-cn.net网站就是好啊,能与这么多网友一起讨论学习ACCESS,为感谢各位,也献上一段代码,是如何判断一个时间段内经历多少个工作日.
函数源于明日科技
Private Function gongzuori(ByVal d1 As Date, ByVal d2 As Date)
  Dim i As Date
  Dim num As Integer
  For i = CDate(d1) To CDate(d2)
      If Weekday(i, vbMonday) <> 7 And Weekday(i, vbMonday) <> 6 Then
        num = num + 1
      End If
  Next i
  gongzuori = num
End Function
调用
Private Sub Command1_Click()
  If IsDate(Text1) = True And IsDate(Text2) = True Then
    Dim i As Integer
    i = gongzuori(CDate(Text1), CDate(Text2))
    Label3.Caption = "经历" & i & "个工作日"
  Else
    MsgBox "请输入日期型"
End If
End Sub
作者: Henry D. Sy    时间: 2008-12-20 20:14
要是能把假期也计算出来就好了。
作者: 小小鸟    时间: 2008-12-22 11:40
原帖由 Henry D. Sy 于 2008-12-19 22:51 发表
没有测试,你自己测试一下看看。再说

Private Sub Text0_Change()
    Dim Byt, LastBit
    If Not Len(Me.Text0.Text) = 0 Then
        Byt = Right(Me.Text0.Text, 1)
        LastBit = Asc(Byt)
      ...


请问斑竹,怎样取消"点"的输入,即只能输入为数字.

另:当第一个输入为"点",然后关闭窗体,代码出错
作者: 小小鸟    时间: 2008-12-23 11:22
6D版主来看看啊.
作者: Henry D. Sy    时间: 2008-12-23 13:37
纯数字就用三楼的方法
作者: 小小鸟    时间: 2008-12-24 10:00
谢谢,搞定.

另:您给的代码,怎么我输入.5变为5, 输入51.变成510,51..变成51.0

[ 本帖最后由 小小鸟 于 2008-12-24 10:10 编辑 ]
作者: Henry D. Sy    时间: 2008-12-24 10:11
这是楼主要求的,跟你要求是两码事。
仔细看看楼主的原帖。
作者: 小小鸟    时间: 2009-2-27 12:24
纯数字就用三楼的方法
Henry D. Sy 发表于 2008-12-23 13:37


但是不能识别有小数的情况啊。
If IsNumeric(Text5) = False Then  
MsgBox "只能输入数字"
End If
是不是还需要什么条件???
作者: Henry D. Sy    时间: 2009-2-27 20:34
不会吧,您把您的例子传上来




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3