我有一本工作簿,里面有几个我想保护的工作表。我没有在保护上使用密码。我有一些与此工作表关联的可视化基本代码,以扩展合并单元格上的行宽。当工作表受到保护时,代码将无效。
我确实找到了一些关于在我的代码中添加unprotect代码的指导,但无法弄清楚在哪里放置它以及如何解决没有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
答案 0 :(得分: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
答案 1 :(得分: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
答案 2 :(得分:0)
Worksheet_Change
或调用任何尝试对excel范围进行一些更改的过程(locked cells = true)时,您需要在代码开头取消保护工作表并保护它再次结束。您可以参考@sobin答案获取语法。