How to Lock and Unlock Cells Based on Another Cell in Excel

Suppose we have a list of student names, and we want to lock this list if they fail the exam, and unlock them if they pass the exam, Fail or Pass will be saved in one cell for example A1, so if A1 is Fail, all cells with names will be locked, otherwise if A1 is Pass, these cells will be unlocked. To implement this function, we can via VBA code to lock and unlock cells based on another cell’s value.

Precondition:

See screenshots below:

Lock and Unlock Cells Based on Another Cell 1               Lock and Unlock Cells Based on Another Cell 2

Refer to different value in A1, we want to lock or unlock cell B2:B6.

Method: Lock and Unlock Cells Based on Another Cell Value Via VBA Code


Step 1: On current visible worksheet, right click on sheet name tab to load Sheet management menu. Select View Code, Microsoft Visual Basic for Applications window pops up.

Or you can enter Microsoft Visual Basic for Applications window via Developer->Visual Basic. You can also press Alt + F11 keys simultaneously to open it.

Step 2: Enter below code in window:

Private Sub Worksheet_Change(ByVal Target As Range)

    If Range("A1") = "Pass" Then

        Range("B2:B6").Locked = False

    ElseIf Range("A1") = "Fail" Then

        Range("B2:B6").Locked = True

    End If

End Sub

Step 3: Save the codes. And then quit Microsoft Visual Basic for Applications.

Step 4: Enter ‘Fail’ in A1, then select B2:B6, right click to load menu, select Format Cell. In Format Cells, click Protection tab. Verify that these cells are locked.

Lock and Unlock Cells Based on Another Cell 3

Step 5: In ribbon, click Review tab, under Protect group click Protect Sheet.

Lock and Unlock Cells Based on Another Cell 4

Step 6: In Protect Sheet, enter password, click OK. Then confirm password.

Lock and Unlock Cells Based on Another Cell 5

Lock and Unlock Cells Based on Another Cell 6

Step 7: Now after above steps, worksheet is protected. Try to edit cell B2:B6.

Lock and Unlock Cells Based on Another Cell 7

Verify that warning message pops up.

Step 8: Go back to step#4, then enter ‘Pass’ in A1 this time, and protect worksheet again, verify that B2:B6 can be updated. (Please notice that ‘Run error’ may pops up sometimes, you can click ‘End’ to ignore the message.)

Lock and Unlock Cells Based on Another Cell 8

Comment:

If value in A1 is not a text but a number for example 60, and if enter value <60, all cells are locked, you can enter below code:

Private Sub Worksheet_Change(ByVal Target As Range)

    If Range("A1").Value < 60 Then

        ActiveSheet.Range("B2:B6").Locked = True

    ElseIf Range("A1").Value >= 60 Then

        ActiveSheet.Range("B2:B6").Locked = False

    End If

End Sub

Check the result, see screenshots below:

Enter 59 in A1:

Lock and Unlock Cells Based on Another Cell 9

Enter 60 in A1:

Lock and Unlock Cells Based on Another Cell 10