2017-01-23 59 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