Excel工作表保护停止宏

时间:2015-04-24 10:41:39

标签: excel vba excel-vba excel-2010

我一直在使用一段代码来缩放以使工作表适合活动窗口。但是,如果我添加表保护,宏将失败。为了解决这个问题,我调用了一个sub来删除保护,然后重新应用保护。有没有办法在不删除和重新应用表单保护的情况下运行我的子程序?

更改缩放的代码:

Sub fixScreenSize()
    Dim rngX As Range
    Dim myLastCell As Range
    Dim myLastCellAdd As String
    Dim rngToZoom As Range      

        'Get address of last cell containing data
        Set myLastCell = Cells(1, 1).SpecialCells(xlLastCell)
            myLastCellAdd = Cells(myLastCell.Row, myLastCell.Column).Address
        'Find keyword in used range
        Set rngX = Range("A1", myLastCellAdd).Find("myZoomRange", lookat:=xlPart)
        'Zoom to correct range
        Range(Cells(1, 1), rngX).Select
        ActiveWindow.Zoom = True
        Range("A1").Select

    Set myLastCell = Nothing
    Set rngX = Nothing
End Sub

2 个答案:

答案 0 :(得分:1)

  • 删除所有表格保护
  • 打开VBE( Alt + F11
  • 转到即时窗口( Ctrl + G
  • 键入ActiveSheet.Protect Password:="myPassword", UserInterfaceOnly:=True,然后按 Enter

现在,活动工作表受到密码" myPassword"的保护,但是UserInterfaceOnly参数意味着您的代码仍然可以在不受工作表保护影响的工作表上运行

答案 1 :(得分:0)

如果不删除并重新添加保护,我无法做到这一点。一旦设置了保护,就无法在不移除保护的情况下绕过纸张保护。

您的方式是正确的方式,不应影响性能或任何事情。

编辑,因为事实证明有一种方法。但是我总是这样做没有问题。