簡體   English   中英

宏腳本可根據A列中的值鎖定和解鎖單元格

[英]Macro script to lock and unlock cells according to values in column A

我是宏的新手,並且根據其他對象的值使用了相應的宏以鎖定和解鎖特定單元格:

Private Sub Worksheet_Change(ByVal Target As range)
    If [$A1] = "Yes" Then
        ActiveSheet.Unprotect ("")
        [$E:$E].locked = True
        [$F:$F].locked = True
        [$N:$N].locked = True
        [$O:$O].locked = True
        [$P:$P].locked = True
        [$X:$X].locked = True
        [$Y:$Y].locked = True
        [$Z:$Z].locked = True
        [$AA:$AA].locked = True
        [$AB:$AB].locked = True
        [$AC:$AC].locked = True
        ActiveSheet.Protect ("")
    Else
        ActiveSheet.Unprotect ("PASSWORD")
        [$E:$E].locked = False
        [$F:$F].locked = False
        [$N:$N].locked = False
        [$O:$O].locked = False
        [$P:$P].locked = False
        [$X:$X].locked = False
        [$Y:$Y].locked = False
        [$Z:$Z].locked = False
        [$AA:$AA].locked = False
        [$AB:$AB].locked = False
        [$AC:$AC].locked = False

        ActiveSheet.Protect ("")
    End If
    If [$A1] = "No" Then
        ActiveSheet.Unprotect ("")
        [$B:$B].locked = True
        ActiveSheet.Protect ("")
    Else
        ActiveSheet.Unprotect ("")
        [$B:$B].locked = False
        ActiveSheet.Protect ("")
    End If
End Sub

$A1是指在A列的所有單元格上運行宏,並鎖定列的范圍。

我不知道如何運行和測試,看看是否有任何錯誤。

編輯:我嘗試了此,但仍然無法測試或查看如何使用它

Private Sub Worksheet_Change(ByVal Target As range)
    If range("A1") = "Yes" Then
        range("B1:B4").locked = True
    ElseIf range("A1") = "No" Then
        range("B1:B4").locked = False
    End If
End Sub

首先,該例程僅在已更改的單元格為A1時才有意義-對於其他任何單元格,我們都應忽略它。

 Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then
        Dim LockCells As Boolean
        LockCells = (UCase(ActiveSheet.Range("A1")) = "YES")
        Dim ColsToLock
        ColsToLock = Split("E,F,N,O,P,X,Y,Z,AA,AB,AC", ",")
        Dim r As Range
        Dim x As Integer
        ActiveSheet.Unprotect ""
        For x = 0 To UBound(ColsToLock) - 1
            Set r = ActiveSheet.Columns(ColsToLock(x) & ":" & ColsToLock(x))
            r.Locked = LockCells
        Next x
        ActiveSheet.Protect ""


    End If
    End Sub

其次,別忘了在開始之前取消保護所有單元格

暫無
暫無

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

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