簡體   English   中英

在Excel VBA中鎖定單元格

[英]Lock Cell in Excel VBA

當我的工作簿受到保護時,下面的代碼不起作用(當沒有任何保護時,它起作用。) 我想做的是保護工作簿和工作表,除了幾個單元格外,在特定數據之后,我希望所有單元格都受到保護,請幫忙。

Sub Workbook_Open()

    If Date >= DateSerial(2016, 1, 19) Then
       Worksheets("Jan").Protect Password:="123"

    ElseIf Date >= DateSerial(2016, 2, 28) Then
       Worksheets("FEB").Protect Password:="123"

    ElseIf Date >= DateSerial(2016, 3, 31) Then
       Worksheets("MAR").Protect Password:="123"

    ElseIf Date >= DateSerial(2016, 4, 30) Then
       Worksheets("Apr").Protect Password:="123"

    End If
End Sub

在我測試它時似乎可以正常工作-可能是它沒有保護每張紙,只是保護了符合測試條件的第一張紙。 因此,在2 If Date >= DateSerial(2016, 1, 19)將為TRUE,那么它將再次保護1月並退出該過程-它甚至不會查看FEB表。

我假設1月的日期應該是31,而不是19。

嘗試:

Private Sub Workbook_Open()

    Dim wrkSht As Worksheet
    Dim dSheet As Date

    'Look at each sheet.
    For Each wrkSht In ThisWorkbook.Worksheets
        'Create first of month date from sheet name.
        dSheet = CDate("1-" & wrkSht.Name & "-" & Year(dSheet))
        'Calculate last day of month (day zero of the following month).
        dSheet = DateSerial(Year(dSheet), Month(dSheet) + 1, 0)

        'Check the date against todays date and protect.
        If Date >= dSheet Then
            wrkSht.Protect Password:="123"
        End If

    Next wrkSht

End Sub

要測試將dSheet = CDate("1-" & wrkSht.Name & "-" & Year(dSheet))更改為dSheet = CDate("1-" & wrkSht.Name & "-" & 2015)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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