以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  字符拦截  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=76855)

--  作者:hbhb
--  发布时间:2015/11/6 11:29:00
--  字符拦截
大师:上次请教的自动合计代码,输入数字时能够自动计算。但是一输入不是数字的字符就出错。通过下面的代码为何不能拦截非数字字符?也显示出错信息对话框?

Dim d As Double                                    
        If Double.TryParse(e.text.replace(",",""), d) Then
   代码。。。。

end if


--  作者:大红袍
--  发布时间:2015/11/6 11:31:00
--  

肯定可以拦截。例子说明。


--  作者:hbhb
--  发布时间:2015/11/6 11:31:00
--  
 Dim  d1 As Double
  If Double.TryParse(val(str(r(Vars("fzToTal")(i))).replace(",","")),d1) Then
                           
   sum(i) += val(d1)
  End If


--  作者:大红袍
--  发布时间:2015/11/6 11:35:00
--  
Dim  d1 As Double
  If Double.TryParse(r(Vars("fzToTal")(i)).replace(",",""),d1) Then
                           
   sum(i) += val(d1)
  End If

--  作者:hbhb
--  发布时间:2015/11/6 11:49:00
--  
谢谢!这样不出错了,但一清空,也就是说删除单元格字符,有出错了?
--  作者:大红袍
--  发布时间:2015/11/6 12:03:00
--  
报什么错?
 
  Dim  d1 As Double
  If r.IsNull(Vars("fzToTal")(i)) = False AndAlso Double.TryParse(r(Vars("fzToTal")(i)).replace(",",""),d1) Then                     
      sum(i) += val(d1)
  End If

--  作者:hbhb
--  发布时间:2015/11/6 12:07:00
--  
多谢了,好了!
这样写与您的写法是否一样?
                       If r.IsNull(Vars("fzToTal")(i)) = False  Then
                        If Double.TryParse(r(Vars("fzToTal")(i)).replace(",",""),d1) Then
                            
                            sum(i) += val(d1)
                        End If
                      End If


--  作者:大红袍
--  发布时间:2015/11/6 12:09:00
--  
差不多。
--  作者:hbhb
--  发布时间:2015/11/6 12:10:00
--  
您就是救世主,狐民的大救星!
--  作者:hbhb
--  发布时间:2015/11/6 13:00:00
--  
能否再加点味精,就是说如果输入的是5%,也能自动合计,合计行也显示百分比才好呢!
5%自动转换为数字用什么函数?