我用多张纸做了一个excel。一些工作表有VBA代码。当我试图隐藏/取消隐藏床单时,它有时会冻结excel。当我在VBA中运行任何例程(在单独的窗口中打开)时,它变得正常。我无法理解为什么excel冻结。
更新
我之前没有发布任何代码,因为我认为它是通用的,因为我认为在隐藏/取消隐藏工作表时没有执行任何代码。我已经找到了问题所在。我在工作表的worksheet_activate事件中有以下代码。我相信这是 “Application.screenUpdating = False” 这导致了这个问题。
问题发生在我试图隐藏其他工作表以使此工作表变为活动状态时,或者当我试图取消隐藏此工作表时。
Private Sub Worksheet_Activate()
'Application.ScreenUpdating = False
Dim c As Range
'show relevant fields
For Each c In Range("hide")
If c.Value = "hide" Then
c.EntireRow.Hidden = True
Else
c.EntireRow.Hidden = False
End If
Next
End Sub
答案 0 :(得分:2)
使用Application.ScreenUpdating = False
即可,甚至在很多情况下都会推荐,但您需要确保将其重新设置为True
:
Application.ScreenUpdating = False
'...
'do some operations that will cause
'the screen to flash, like opening
'lots of files or manipulating ranges
'on active sheet
'...
Application.ScreenUpdating = True
'...
'not worried about screen updates anymore
'...