标题:字符串输入多个00时的处理问题,路过的师傅看看哪里有问题。
只看楼主
wxflw
Rank: 6Rank: 6
等 级:侠之大者
帖 子:324
专家分:435
注 册:2012-1-29
结帖率:88.24%
已结贴  问题点数:20 回复次数:3 
字符串输入多个00时的处理问题,路过的师傅看看哪里有问题。
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编辑过]

搜索更多相关主题的帖子: Text Text1 Index 输入 And 
2020-03-11 15:16
wxflw
Rank: 6Rank: 6
等 级:侠之大者
帖 子:324
专家分:435
注 册:2012-1-29
得分:0 
问题知道了,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编辑过]


学习--------------学习-------------------学习--------------------!!
2020-03-11 15:21
show147
Rank: 2
等 级:论坛游民
威 望:3
帖 子:40
专家分:81
注 册:2020-3-14
得分:20 
Text1(Index).Text=Format(Text1(Index).Text, "0.0")
2020-03-18 13:59
show147
Rank: 2
等 级:论坛游民
威 望:3
帖 子:40
专家分:81
注 册:2020-3-14
得分:0 
要实现输入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)出现了"."   





2020-03-18 14:58



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-499706-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.109816 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved