EXCEL VBA中 FOR循环中为何无法动态输出Label值

PrivateSubCommandButton1_Click()Fori=1To1000Range("a"&i).Value=iLabel1.Caption=iTextB... Private Sub CommandButton1_Click()

For i = 1 To 1000
Range("a" & i).Value = i
Label1.Caption = i
TextBox1.Text = i
'MsgBox i
Next i

End Sub

比如说我要在VBA窗体中的Label1中动态输出变量I的数值,但是为何只会显示最后哪个数值呢,换文本框也一样。
但是加了一个'MsgBox 消息框,就会同步输出了,但是每次都要点击确定按钮。
到底为何不能同步显示到标签框中阿。。。。。。。。。。
展开
 我来答
百度网友cc16d5c
2014-08-12 · TA获得超过731个赞
知道小有建树答主
回答量:647
采纳率:50%
帮助的人:534万
展开全部
程序运行速度是很快的,像这种1000次的循环,完成的时间几段,所以在Label1中看到的是最后一个数值
加入MsgBox后,每次运行到MsgBox这行,在没有关闭消息框时,MsgBox之后的代码并不会运行,所以可以看到同步输出。
追问
不是阿,我只是举了个简单的例子,实际运用中条目数很大,程序并没有怎么快,但是就是只显示结果数,中间的数字过程不会自动更新统计阿。比如说有几万条数据需要查找重复,在这个过程中很慢的,但是数字就是不显示,除非全部完成后显示结果.
追答
Label1刷新是需要一定时间的,如果还没有刷新完成就再次开始重置Caption,那么就会继续刷新,如此,直到完成一次完整的刷新过程,你才看得到实时的变量值,另外,几万条数据的遍历循环也是很快的,除非查找时需要进行大量的耗时计算,否则也是一闪而过的事情。
chenjiawei5000
2014-08-12 · TA获得超过2779个赞
知道大有可为答主
回答量:2585
采纳率:30%
帮助的人:2052万
展开全部
For i = 1 To 1000
Range("a" & i).Value = i
Label1.Caption = i
TextBox1.Text = i
Application.Wait Now + 1 / 86400
Next i

这样试试

追问
问题解决了,加了DoEvents就可以显示了
追答
解决就好。如果要连续的看到1变化到1000,代码这样写没问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式