如何在受保护的工作表上进行可视化的基本工作(没有保护密码)

我有一本我想要保护的工作簿。 我没有在保护上使用密码。 我有一些可视的基本代码与此工作表相关联,以扩大合并的单元格上的行宽。 当表被保护时,代码将不起作用。

我find了一些关于在我的代码中添加无保护代码的指导,但是却无法弄清楚在哪里放置它,以及如何解决没有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 

你可能可以做这样的事情:

.Unprotect.Unprotect环绕代码

 Sub protectSheet() Dim ws As Worksheet Set ws = Sheets(1) With ws .Unprotect "password" 'Insert Code Here .Protect "password" End With End Sub 

尝试这个:

 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事件。
此代码保护所有的WS每次打开WB,但允许macros由于UserInterfaceOnly设置为true

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