关于程序运行速度问题

wqdz 2005-01-19 11:03:12
各位高手,本人踫到这样一个问题,在下一个代码中,对有没有StatusBar1.Panels(1).Text = Trim(Str(i))行,速度怎么区别这么大,请帮助解答,谢谢!
窗体中一个按钮、一个文本框和一个状态栏。

Private Sub Command1_Click()
'计算

Dim i As Integer
Dim sum As Double

On Error GoTo handlerror

sum = 0
For i = 1 To 20000
StatusBar1.Panels(1).Text = Trim(Str(i)) '如果没有这一行计算速度1秒以内计算完成,如果有这一行计算要15秒以上,请问是怎么回事?
sum = sum + i
Next i

Text1.Text = Trim(Str(sum))

Exit Sub
handlerror:
MsgBox "计算出错,请检查后再试试。", vbInformation, "问题提示"

End Sub
...全文
92 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
viena 2005-01-19
  • 打赏
  • 举报
回复
KAO,哪里来的弱智?石欠!
还“DoEvents '没有这句你的文本框是不显示的。”
这是在循环里面,吐血ing
dongge2000 2005-01-19
  • 打赏
  • 举报
回复
Option Explicit

Private Sub Command1_Click()
'计算
Dim i As Integer
Dim sum As Double
On Error GoTo handlerror
sum = 0
For i = 1 To 20000
StatusBar1.Panels(1).Text = Trim(Str(i)) '如果没有这一行计算速度1秒以内计算完成,如果有这一行计算要15秒以上,请问是怎么回事?
sum = sum + i
DoEvents '没有这句你的文本框是不显示的。
Next i
Text1.Text = Trim(Str(sum))
Exit Sub
handlerror:
MsgBox "计算出错,请检查后再试试。", vbInformation, "问题提示"
End Sub
dongge2000 2005-01-19
  • 打赏
  • 举报
回复
呵呵,晓琴很卖力啊,支持下!
viena 2005-01-19
  • 打赏
  • 举报
回复
15/20000秒内改变显示的内容?给谁看啊?超人?
viena 2005-01-19
  • 打赏
  • 举报
回复
程序在高速运行中,不知道这一句有何意义?
StatusBar1.Panels(1).Text = Trim(Str(i))
viena 2005-01-19
  • 打赏
  • 举报
回复
另外调用函数也需要时间的,如果没有循环,时间差别可以忽略不计,
但循环次数这么多,差别就显示出来了
viena 2005-01-19
  • 打赏
  • 举报
回复
访问对象的属性比方问变量慢几十倍
qiqi5521 2005-01-19
  • 打赏
  • 举报
回复
优化了一下
Option Explicit


Private Sub Command1_Click()
'计算

Dim i As Integer
Dim sum As Double





On Error GoTo handlerror

sum = 0

With StatusBar1.Panels(1)
For i = 1 To 20000

If (i And &HF) = 0 Then .Text = i
sum = sum + i
Next i
End With


Text1.Text = Trim(Str(sum))

Exit Sub
handlerror:
MsgBox "计算出错,请检查后再试试。", vbInformation, "问题提示"

End Sub


wqdz 2005-01-19
  • 打赏
  • 举报
回复
非常感谢各位的热心解答。在代号中这样做,主要是想让用户知道,程序正在进行计算和大致运行到的位置;而用进度条不能很好地显示。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧