2017-01-23 158 views
0

我是vba的一個noob(OTJ訓練過的「程序員」,如果你可以與這個術語同時使用),但一直在使用Stack Overflow來回答我的許多問題。我有一個有趣的事情發生在打開工作簿時自動啓動的宏。我將所有頁面設置爲有密碼,並且只能訪問未封鎖的單元格。代碼似乎沒有限制單元格選擇到工作簿打開頁面以外的任何頁面。此外,當它限制單元格選擇時,我知道除了在名稱框中找到的內容(即單元格沒有以任何方式概述)之外,我知道更長的時間具有對當前活動單元格的任何可視指示。如果有人有任何建議,我在下面添加了我的代碼。提前感謝你!EnableSelection刪除活動單元格綱要

(使用Excel 2010,在32位的Windows-7機)

============================= ====

Sub Auto_Open() 
' 
' PasswordReset Macro 
' Resets the password for all worksheets to "physic$" 
' 
' Keyboard Shortcut: Ctrl+Shift+L 
' 
    Dim wsh As Worksheet 
     For Each wsh In Worksheets(Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", "Baselines")) 
     'wsh.Unprotect Password:="physic$" 
     wsh.Protect Password:="physic$", UserInterfaceOnly:=True,  DrawingObjects:=True, Contents:=True, Scenarios:=True 
     wsh.EnableOutlining = True 
     wsh.EnableSelection = xlUnlockedCells 
    Next wsh 
End Sub 
+0

您是否有任何**所有**單元格被鎖定的表單?單步執行代碼,我發現我可以在不包含未鎖定單元的工作表受到保護的位置複製行爲。即如果除了「May」之外,所有工作表都有一些單元格已解鎖,則表單「May」上的單元格輪廓會在May表被設置爲受保護時消失。 – YowE3K

+0

我還發現只需更改爲另一個應用程序並切換回Excel即可解決問題。甚至在工作表之間切換可以修復它。 – YowE3K

回答

0

上面的代碼在保持單元輪廓的同時適用於我。您可能想嘗試在循環中的每張表格上選擇一個單元格。

wsh.range("A1").select 
0

這似乎是一個「錯誤」。

單步執行代碼時,我發現我可以在未包含未鎖定單元的表單受到保護的位置複製行爲 - 即,如果所有表單都有一些單元格已解鎖,除了「May」,單元格大綱在表單「1月「將在」May「表被設置爲受保護時消失。

我還發現,只需更改爲另一個應用程序並切換回Excel即可解決問題。甚至在工作表之間切換可以修復它。那個觀察讓我想到了一個潛在的解決方法。


你的代碼將記錄這片活躍在宏觀的啓動,激活每個工作表,而宏通過它們循環的以下修改版本,然後激活結束原來的工作表。

Sub Auto_Open() 
' 
' PasswordReset Macro 
' Resets the password for all worksheets to "physic$" 
' 
' Keyboard Shortcut: Ctrl+Shift+L 
' 
    Dim wsh As Worksheet 
    Dim wsh0 As Worksheet 
    Set wsh0 = ActiveSheet 

    For Each wsh In Worksheets(Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", "Baselines")) 
     wsh.Activate 
     'wsh.Unprotect Password:="physic$" 
     wsh.Protect Password:="physic$", UserInterfaceOnly:=True,  DrawingObjects:=True, Contents:=True, Scenarios:=True 
     wsh.EnableOutlining = True 
     wsh.EnableSelection = xlUnlockedCells 
    Next wsh 

    wsh0.Activate 
End Sub