簡體   English   中英

鎖定/解鎖可變單元格

[英]Lock/unlock a variable cell(s)

My Excel VBA會解鎖所需的單元格,但在條件更改時無法重新鎖定。

在我的Excel實用程序中,如果A1的值為“ A”,則它將在范圍A8:A13中找到B1並解鎖具有值B1的行和具有值“ b”的列以及具有值“ c”的列的單元格(此處的單元格B9和C9將被解鎖)。 我的VBA在這里工作,但是當我將B1的值(例如,“ w”更改為“ e”)時,它會再次解鎖相應的單元格(例如,單元格B10和C10),但不會重新鎖定之前解鎖的單元格(即,單元格B9和C9)。 。

Excel實用程序

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If [A1] = "A" Then
    ActiveSheet.Unprotect ("")
    [=INDEX(A8:F13,MATCH(B1,A8:A13,0),MATCH("b",A8:F8,0))].Locked = False
    [=INDEX(A8:F13,MATCH(B1,A8:A13,0),MATCH("c",A8:F8,0))].Locked = False
    ActiveSheet.Protect ("")
Else
    ActiveSheet.Unprotect ("")
    [=INDEX(A8:F13,MATCH(B1,A8:A13,0),MATCH("b",A8:F8,0))].Locked = True
    [=INDEX(A8:F13,MATCH(B1,A8:A13,0),MATCH("c",A8:F8,0))].Locked = True
    ActiveSheet.Protect ("")
End If
End Sub

將代碼更改為此:

Private Sub Worksheet_Change(ByVal Target As Range)
    If [A1] = "A" Then
        Unprotect ""
        Range("B9:F13").Locked = True '<--|| set all range "locked" 
        [=INDEX(A8:F13,MATCH(B1,A8:A13,0),MATCH("b",A8:F8,0))].Locked = False '<--| unlock wanted cell
        [=INDEX(A8:F13,MATCH(B1,A8:A13,0),MATCH("c",A8:F8,0))].Locked = False '<--| unlock wanted cell
        Protect ""
    End If
End Sub

暫無
暫無

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

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