2017-02-25 1 views
0

Mein Excel VBA entsperrt die gewünschten Zellen, kann aber nicht erneut sperren, wenn sich Kriterien ändern. Wenn in meinem Excel-Dienstprogramm A1 den Wert "A" hat, wird es B1 im Bereich A8: A13 finden und die Zellen der Zeile mit dem Wert B1 und die Spalte mit dem Wert "b" und die Spalte mit dem Wert entsperren "c" (Hier werden die Zellen B9 und C9 entsperrt). Mein VBA funktioniert hier, aber wenn ich den Wert von B1 ändere (zB "w" auf "e", entsperrt er wieder die entsprechenden Zellen, zB die Zellen B10 und C10, aber nicht die zuvor entsperrten Zellen, also die Zellen B9 und C9 .Eine variable Zelle sperren/entsperren

Excel utility

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 

Antwort

1

ändern Code dazu:

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 
Verwandte Themen