2016-07-03 59 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