无法保护的纸张无法修改

时间:2016-07-18 08:41:11

标签: excel vba excel-vba password-protection

我有一张用密码保护的表格。当我用VBA更改该表上的任何内容时,我会像这样取消保护:

Private Sub Worksheet_Change(ByVal target As Range)
    ActiveSheet.Unprotect Password:="pass"

    'do stuffs

    ActiveSheet.Protect Password:="pass"

End Sub

问题是我仍然在此行中收到此错误消息:

 For j = 13 To 12 + numberofsomething
     With Range("H" & j & ":L" & j).Borders
         .LineStyle = xlContinuous  '<---Here
         .Weight = xlMedium
         .Color = RGB(255, 0, 0)
     End With
 Next j
  

运行时错误:1004   无法设置Borders类的LineStyle属性

可能是什么问题?

1 个答案:

答案 0 :(得分:1)

每次保护和取消保护工作表都没有效率。

您可以像这样保护所有表格: 如果你已经准备好了边框,Excel有时会出现问题,所以在你编写它之前,只需将B顺序设置为None。

Private Sub Workbook_Open()
  Dim wks As Worksheet

  'Loop over all Sheets
  For Each wks In ActiveWorkbook.Worksheets

    wks.Protect Password:="Secret", _
     UserInterFaceOnly:=True
  Next wks

End Sup

UserInterFaceOnly是Protect Method的可选参数,我们可以将其设置为True,默认值为False。通过将此参数设置为True Excel,将允许所有Excel VBA宏在使用或不使用密码保护的Worksheet上运行。因此,您无需始终取消保护工作表。

对于你的其他问题,当边界已经设置好时,Excel有时会出现问题。因此,在更改之前尝试将边框设置为无。

For j = 13 To 20
    With Range("H" & j & ":L" & j).Borders
         .LineStyle = xlNone
     End With
     With Range("H" & j & ":L" & j).Borders
         .LineStyle = xlContinuous  '<---Here
         .Weight = xlMedium
         .Color = RGB(255, 0, 0)
     End With
 Next j