注册 登录
编程论坛 VB6论坛

字符串输入多个00时的处理问题,路过的师傅看看哪里有问题。

wxflw 发布于 2020-03-11 15:16, 2246 次点击
Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)
  '======================
  Dim a As String
  a = ".0123456789" & Chr(8) & Chr(13)
  If InStr(a, Chr(KeyAscii)) = 0 Or (KeyAscii = Asc(".") And (Text1(Index) = "" Or InStr(Text1(Index), ".") > 0)) Then KeyAscii = 0
 '========================上面这段挺好的,防止第一个字符输入小数点“.”,防止输入2个小数点。谢谢版主wmf2014的帮助。

'下面这段帮我看看,目的是防止输入00.1这种多个0,下面这段可以实现我的目的
  If KeyAscii = Asc("0") And Len(Text1(Index).Text) = 1 Then
     If Text1(Index).Text = 0 Then KeyAscii = 0
  End If

'但是,上面这个想整合成下面一句怎么会报错,错在这一段And Text1(Index).Text = 0 ,报错13,类型不匹配
                                                        'ˇˇˇˇˇˇˇˇˇˇˇˇ
  If KeyAscii = Asc("0") And Len(Text1(Index).Text) = 1 And Text1(Index).Text = 0 Then KeyAscii = 0   '怎么会报错.......
'另外,我要实现输入0.10000后自动将这个数值变为0.1,要怎么弄?除了val()外还有什么方法吗?
End Sub

[此贴子已经被作者于2020-3-11 15:35编辑过]

3 回复
#2
wxflw2020-03-11 15:21
问题知道了,Text1(Index).Text = 0这个处理一下  Val(Text1(Index).Text) = 0 就可以了。
但是下面这个实现输入0.10000后自动将这个数值变为0.1,这个要怎么做?


 If KeyAscii = Asc("0") And Len(Text1(Index).Text) = 1 And Val(Text1(Index).Text) = 0 Then KeyAscii = 0 '这个也不对哇,,输入01.00就失效了.看来还要在小数点上面研究怎么判断了0

[此贴子已经被作者于2020-3-11 15:38编辑过]

#3
show1472020-03-18 13:59
Text1(Index).Text=Format(Text1(Index).Text, "0.0")
#4
show1472020-03-18 14:58
要实现输入0.10000后自动将这个数值变为0.1,要怎么弄?除了val()外还有什么方法吗?
如果你想实现的功能是把小数点右边的无意义的零去掉,可以试试
For i = 1 To Len(Text1(Index).Text) - InStr(Text1(Index).Text, ".") '小数点右边有多少位数就循环多少次
    If Right(Text1(Index).Text, 1) = "0" Then Text1(Index).Text = Left(Text1(Index), Len(Text1(Index)) - 1)
'如果最右边的数是0的话,去掉,
Next i


And Text1(Index).Text = 0 报错是因为类型不一致, Text1(Index).Text 字符型   0 数字型,把像上面程序里一样把 0改为"0" 就行了
 InStr(Text1(Index), ".") > 0 怎么是防止输入两个小数点的意思,我看是  如果Text1(Index)出现了"."   





1