回 帖 发 新 帖 刷新版面

主题:[弱问]:这句的显示结果怎么会是1呢?

基本语句,可是为什么结果是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呢?
请指点!
谢谢!

回复列表 (共10个回复)

沙发

计算式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

板凳

请问,不合适的原因是什么?过程中数据会有变化?
如何不通过按钮达到我想要的效果呢?

事实上如果把最后一句的fix去掉,那么label1显示的也是2

3 楼

不好意思,我把Text11看成Text1了,如果是两文本框,Text1_Change过程是可以的,但Text11_LostFocus过程仍然是不合适的,因为它首先要获得焦点再失去焦点才会产生这个事件,增加了操作次数。
Fix(Val(Text1) * 1000 / Val(Text1))的结果似乎恒为1000

4 楼

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 楼

同志们:

请记住:老大是幽默的,但老大更是经典、精辟的

6 楼

对不起,是我的不对,是我自己少打了一个1

1、Fix(Val(Text1) * 1000 / Val(Text1))
这个,应该是1、Fix(Val(Text1) * 1000 / Val(Text11))
我也知道加按钮最好,但是为了凸现数据之间的关联,不想要多加按钮。

2、*1000/2这个其实只是我为了以后修改的时候校对公式用的。。。这个运行的时候和*500相比差别很大吗?

7 楼

我运行你代码的结果就是你要的!
党在text1例输入2.4后,text11的内容为1200,当text11失去焦点的时候,label1就变为了2

8 楼

可是我这里lostfocus之后就是1。。。。崩溃

9 楼

把你的这个工程全部压缩,上传看看。

10 楼

我不能这么做。。。sigh~
我干脆用四舍五入的方法好了,fix函数里面加0.5,这样应该不会有问题了~

谢谢以上各位的耐心!

我来回复

您尚未登录,请登录后再回复。点此登录或注册