簡體   English   中英

通過 VBA 編碼鎖定和解鎖工作表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM