![](/img/trans.png)
[英]VBA How to lock the entire sheet except one column and unlock on condition
[英]Lock and unlock sheet via VBA coding
我修改了一個 VB 代碼以根據單元格的值顯示和隱藏行。 代碼運行良好,但我需要密碼保護工作表,當然,一旦工作表受到保護,VB 將無法運行。
我嘗試了一些變體,但我不是程序員,所以我只是不明白 - 更聰明的人可以幫助我嗎?
代碼如下:
Private Sub Worksheet_Change(ByVal Target As Range)
Rows("1:" & Rows.Count).EntireRow.Hidden = False
If Range("M11") = "0" Then
Rows("13:92").EntireRow.Hidden = True
End If
If Range("M11") = "Mini" Then
Rows("13:18").EntireRow.Hidden = True
Rows("38:57").EntireRow.Hidden = True
End If
If Range("M11") = "Small" Then
Rows("13:18").EntireRow.Hidden = True
Rows("43:57").EntireRow.Hidden = True
End If
If Range("M11") = "Standard" Then
Rows("13:18").EntireRow.Hidden = True
End If
End Sub
我嘗試了解鎖代碼的變體,但我對編程的了解還不夠多,無法知道它們是如何組合在一起的,所以我只會遇到錯誤。
取消保護,根據單元格值隱藏/取消隱藏,然后重新保護。
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Me.Range("M11")) Is Nothing Then Exit Sub
Me.Unprotect Password:="YourPasswordHere"
Me.Rows.Hidden = False
Select Case Me.Range("M11").Value
Case 0
Me.Rows("13:92").Hidden = True
Case "Mini"
Me.Rows("13:18").Hidden = True
Me.Rows("38:57").Hidden = True
Case "Small"
Me.Rows("13:18").Hidden = True
Me.Rows("43:57").Hidden = True
Case "Standard"
Me.Rows("13:18").Hidden = True
End Select
Me.Protect Password:="YourPasswordHere"
End Sub
如評論中所述,另一種選擇是使用UserInterfaceOnly:=True
Protect
工作表。 使用此方法,您需要利用Workbook_Open
事件來保護工作表。 如果工作簿關閉, UserInterfaceOnly
不會持續存在。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.