[英]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)。 。
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.