未受保护的工作表无法修改

我有一张用密码保护的表格。 当我用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无法设置边框类的LineStyle属性

可能是什么问题呢?

每次保护和取消保护您的工作表是没有效率的。

你可以像这样保护你所有的表格:有时如果你已经有一个边界,Excel会得到一个问题,所以只需将B顺序设置为无。在格式化之前。

 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 VBAmacros在受保护的工作表上运行,不pipe有没有密码。 所以你不需要一直保护你的工作表。

而对于你的其他问题,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