主题:[弱问]:这句的显示结果怎么会是1呢?
february12
[专家分:0] 发布于 2008-05-05 12:48:00
基本语句,可是为什么结果是1呢?
Private Sub Text1_Change()
Text11.text = Val(Text1) * 1000 / 2
End Sub
Private Sub Text11_LostFocus()
Label1.Caption = Fix(Val(Text1) * 1000 / Val(Text11))
当text1的内容是2.4的时候,text11的内容是1200
但是label1的结果居然也是1,这是为什么呢?如何让label1的结果显示为2呢?
请指点!
谢谢!
最后更新于:2008-05-08 17:39:00
回复列表 (共10个回复)
沙发
一江秋水 [专家分:9680] 发布于 2008-05-05 17:45:00
计算式Text11.text = Val(Text1) * 1000 / 2放在Text1_Change过程中不大合适,放在Text11_LostFocus过程中更不合适。可以再加一个按纽:
Private Sub Command1_Click()
Text1.Text = Val(Text1) * 1000 / 2
Label1.Caption = Fix(Val(Text1) * 1000 / Val(Text1))
End Sub
板凳
february12 [专家分:0] 发布于 2008-05-06 09:18:00
请问,不合适的原因是什么?过程中数据会有变化?
如何不通过按钮达到我想要的效果呢?
事实上如果把最后一句的fix去掉,那么label1显示的也是2
3 楼
一江秋水 [专家分:9680] 发布于 2008-05-06 15:22:00
不好意思,我把Text11看成Text1了,如果是两文本框,Text1_Change过程是可以的,但Text11_LostFocus过程仍然是不合适的,因为它首先要获得焦点再失去焦点才会产生这个事件,增加了操作次数。
Fix(Val(Text1) * 1000 / Val(Text1))的结果似乎恒为1000
4 楼
老大徒伤悲 [专家分:29120] 发布于 2008-05-07 19:16:00
1、Fix(Val(Text1) * 1000 / Val(Text1))究竟是什么意思?
2、Private Sub Text1_Change()
Text11.text = Val(Text1) * 1000 / 2
End Sub
似乎没有实质问题。但在输入2.4的时候,会三次被调用!一般的做法是“确定”按钮。这个在标准的软件里很常用,你也许留意到过?
还有,乘1000,除以2,为什么不写成乘500呢?
5 楼
wdkshp [专家分:5490] 发布于 2008-05-08 10:27:00
同志们:
请记住:老大是幽默的,但老大更是经典、精辟的
6 楼
february12 [专家分:0] 发布于 2008-05-08 17:43:00
对不起,是我的不对,是我自己少打了一个1
1、Fix(Val(Text1) * 1000 / Val(Text1))
这个,应该是1、Fix(Val(Text1) * 1000 / Val(Text11))
我也知道加按钮最好,但是为了凸现数据之间的关联,不想要多加按钮。
2、*1000/2这个其实只是我为了以后修改的时候校对公式用的。。。这个运行的时候和*500相比差别很大吗?
7 楼
老大徒伤悲 [专家分:29120] 发布于 2008-05-09 13:46:00
我运行你代码的结果就是你要的!
党在text1例输入2.4后,text11的内容为1200,当text11失去焦点的时候,label1就变为了2
8 楼
february12 [专家分:0] 发布于 2008-05-09 17:50:00
可是我这里lostfocus之后就是1。。。。崩溃
9 楼
老大徒伤悲 [专家分:29120] 发布于 2008-05-09 18:39:00
把你的这个工程全部压缩,上传看看。
10 楼
february12 [专家分:0] 发布于 2008-05-10 08:57:00
我不能这么做。。。sigh~
我干脆用四舍五入的方法好了,fix函数里面加0.5,这样应该不会有问题了~
谢谢以上各位的耐心!
我来回复