2016-07-03 42 views
0

我有一个从WorkbookOpen事件中调用的例程 - 它所做的只是隐藏/取消隐藏适当的工作表并保护其中的一部分(我将把代码放在下面),并且它会导致一个奇怪的问题,那就是屏幕上有一张电子表格的图片,但是我会选择单元格,更改值等。IS发生在表格上,但没有显示在屏幕上 - 也没有显示表格选项卡底端。在WorkbookOpen中保护和隐藏工作表会禁用屏幕

如果我点击关闭按钮,然后取消,在询问我是否想保存...我所有的更改都在那里,工作表选项卡可见,并且Excel工作正常(没有WorkbookBeforeSave例程,所以没有代码在那里触发)

我很想知道是什么原因造成了这个问题(甚至是解决方法),因为这会导致我疯了。

由Open事件调用的代码是:

Sub ProtectAndHide() 
Dim xSheet As Worksheet 
Application.ScreenUpdating = False 
    For Each xSheet In ThisWorkbook.Worksheets 
     Select Case UCase(xSheet.Codename) 
      Case "PROPERTIES", "COA", "ASSUMPTIONS", "ENGINE", "EXECSUMM", "NOTES", "DISCLAIMER", "COVER" 
       xSheet.Visible = xlSheetVisible 
       xSheet.Protect Password:=HIDDEN.Range("iWord") 
      Case "COAMAP", "SLDEPN" 
       xSheet.Visible = xlSheetHidden 
       xSheet.Protect Password:=HIDDEN.Range("iWord") 
      Case "HIDDEN", "REPSHEET", "CONTENTSSHEET", "ACTIONS" 
       xSheet.Visible = xlSheetVeryHidden 
     End Select 
    Next xSheet 
End Sub 
+0

删除/评论'Application.ScreenUpdating = False'行 – user3598756

回答

2

末添加Application.ScreenUpdating = True

Sub ProtectAndHide() 
    Dim xSheet As Worksheet 
    Application.ScreenUpdating = False 
     For Each xSheet In ThisWorkbook.Worksheets 
      Select Case UCase(xSheet.Codename) 
       Case "PROPERTIES", "COA", "ASSUMPTIONS", "ENGINE", "EXECSUMM", "NOTES", "DISCLAIMER", "COVER" 
        xSheet.Visible = xlSheetVisible 
        xSheet.Protect Password:=HIDDEN.Range("iWord") 
       Case "COAMAP", "SLDEPN" 
        xSheet.Visible = xlSheetHidden 
        xSheet.Protect Password:=HIDDEN.Range("iWord") 
       Case "HIDDEN", "REPSHEET", "CONTENTSSHEET", "ACTIONS" 
        xSheet.Visible = xlSheetVeryHidden 
      End Select 
     Next xSheet 
    Application.ScreenUpdating = True 
    End Sub