VBA运行缓慢问题,各位高手指点

PrivateSubCommandButton1_Click()Dimi,jAsIntegerj=0Fori=6To32IfCells(i,6)=0Thenj=j+1Ce... Private Sub CommandButton1_Click()
Dim i, j As Integer
j = 0
For i = 6 To 32
If Cells(i, 6) = 0 Then
j = j + 1
Cells(i, 6).EntireRow.Hidden = True
End If
Cells(i, 1) = i - j - 5
Next
End Sub
Private Sub worksheet_change(ByVal target As Range)
Dim i As Integer
For i = 6 To 32
If Cells(i, 6) = 0 Then
Cells(i, 6).EntireRow.Interior.Color = vbGreen
Else: Cells(i, 6).EntireRow.Interior.Pattern = xlNone
End If
Next
End Sub
我只是在一个sheet1运行以上代码,按command1按钮时,执行异常缓慢,然而当把Else: Cells(i, 6).EntireRow.Interior.Pattern = xlNone这句去掉时,执行速度就正常了,求教各位高手啊,为什么会出现这种情况~~~~
展开
 我来答
enjoyllonely
2011-09-06 · TA获得超过2.5万个赞
知道大有可为答主
回答量:1.3万
采纳率:60%
帮助的人:7386万
展开全部
姑且不考虑代码的合理性,从代码运行上来讲,我个人觉得你应该加屏幕刷新的关闭和开启功能
即,代困宴码的第二行,定义变答升量前加上一行
application.ScreenUpdating=False

这样可以关闭屏幕汪举银刷新
在end sub前一行加入
application.ScreenUpdating=true
打开屏幕刷新,相信你会有不错的速度提升
更多追问追答
追问
是快了很多,但是,刷新的是不是太多了点?闪的频率太高了点~~~
追答
application.ScreenUpdating=False
这一行就是关闭的刷新,要放在代码运行的最前面。
如果加了这个,怎么可能还有刷新呢?检查你加代码的位置。
10993358
2011-09-06 · TA获得超过4279个赞
知道大有可为答主
回答量:1813
采纳率:100%
帮助的人:2259万
展开全部
问题是这样的 除了上面提到戚孝余的关闭更新外,最主要的是你按钮里面代码里面有个隐藏的功能,这样每次你隐藏了一下 工作表就变化了 那么就要执行一下你WORKSHEET里面 就是你按钮里面有个 I 满足条件的时候 那么 sheetchange里面 I 就要循环一遍
我建议worksheet_change事件可以不可慎野以不要 在按钮代码后面加高滚一个For each 来判断一下 来替代worksheet change事件
更多追问追答
追问
谢谢~~~但是现在还有个疑问,我把同样的代码放入sheet2中,怎么会没有任何效果显示呢?
追答
我把你代码复制了 测试一下 貌似速度还可以接受哇 
你代码是方的CHANGE事件吧
其实SHEETchange时间的触发 你是按钮里面最好那句话触发的 sheet2里面表是不是没有变化 就没触发change事件?
还有你上面的闪 不是更新的问题 是比隐藏行 看上去像刷新哇
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式