2013-10-03 60 views
0

我有一本工作簿,我想保护几张工作表。我没有在保护上使用密码。我有一些与此工作表相关的可视基本代码来扩展合并单元格上的行宽。当表单受到保护时,代码将不起作用。如何使受保护的工作表上的视觉基本工作(没有保护的密码)

我确实找到了一些关于在我的代码中添加无保护代码的指导,但无法弄清楚它放在哪里以及如何解决没有passord的事实。进一步的指导将不胜感激!

这里是我的代码:

Private Sub Worksheet_Change(ByVal Target As Range) 

    Dim NewRwHt As Single 
    Dim cWdth As Single, MrgeWdth As Single 
    Dim c As Range, cc As Range 
    Dim ma As Range 

    With Target 
     If .MergeCells And .WrapText Then 
      Set c = Target.Cells(1, 1) 
      cWdth = c.ColumnWidth 
      Set ma = c.MergeArea 
      For Each cc In ma.Cells 
       MrgeWdth = MrgeWdth + cc.ColumnWidth 
      Next 
      Application.ScreenUpdating = False 
      ma.MergeCells = False 
      c.ColumnWidth = MrgeWdth 
      c.EntireRow.AutoFit 
      NewRwHt = c.RowHeight 
      c.ColumnWidth = cWdth 
      ma.MergeCells = True 
      ma.RowHeight = NewRwHt 
      cWdth = 0: MrgeWdth = 0 
      Application.ScreenUpdating = True 
     End If 
    End With 
End Sub 

回答

3

你也许可以做这样的事情:

.Unprotect环绕你的代码和.Protect

Sub protectSheet() 

    Dim ws As Worksheet 
    Set ws = Sheets(1) 

    With ws 
     .Unprotect "password" 

     'Insert Code Here 

     .Protect "password" 
    End With 

End Sub 
0

试试这个:

Private Sub Workbook_Open() 

Dim wSheet As Worksheet 

For Each wSheet In Worksheets 

    wSheet.Protect Password:="Password_here", _ 
    UserInterFaceOnly:=True 

Next wSheet 

End Sub 

将此代码放入'ThisWorkbook'中,然后使用Workbook_Open事件。
这个代码可以保护你打开WB 的WS每次但允许宏运行,由于UserInterfaceOnly设置为true

0
  1. 您需要保护与密码的纸。
  2. 如果您希望用户编辑某些单元格(即使工作表已被保护),请在保护工作表之前将这些单元格的锁定属性设置为false。
  3. 现在当Worksheet_Change被触发,或者任何正在尝试对excel范围进行一些更改(锁定的单元格= true)的过程被调用时,则需要在代码开始时对工作表取消保护并再次保护它。您可以参考@sobin答案的语法。
  4. 您也可以使用错误处理程序并明确保护工作表。这样做是为了避免纸张未受保护的情况,然后由于任何原因出现错误,然后会使纸张不受保护。
相关问题