我有一张用密码保护的表格。当我用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属性
可能是什么问题?
答案 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