locking/解锁variables单元格
我的Excel VBA解锁所需的单元格,但不能在条件更改时重新locking。
在我的Excel工具中,如果A1的值为“A”,那么它将在A8:A13范围内findB1,并解锁行值为B1,列值为“b”,列值为“c”的行在这里单元格B9和C9被解锁)。 我的VBA在这里工作,但是当我改变B1的值(例如“w”到“e”)时,它再次解锁相应的单元,例如单元B10和C10,但是它不重新locking早先解锁的单元,即单元B9和C9, 。
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