• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 308
  • Last Modified:

Protecting cells based on values in other cells

I have a protected worksheet that is used to order software licenses. There are three types of licenses with an input cell for each type(B13,B14,B15). The license types are mutually exclusive. Because of other formula based calculations I can not use a data validation drop down list.

What I want to accomplish: When a numeric value is entered into one of the three cells the other two are locked to prevent the possibility of ordering more than one type of license.

The cell have conditional formatting to gray out other two of the cells when a value is entered into one of the cells.
0
dnldsn
Asked:
dnldsn
  • 3
  • 3
1 Solution
 
Martin LissRetired ProgrammerCommented:
Private Sub Worksheet_Change(ByVal Target As Range)
    Select Case Target.Address
        Case "$B$13"
            If IsNumeric(Cells(13, 2).Value) Then
                Range("B14", "B15").Locked = True
            End If
        Case "$B$14"
            If IsNumeric(Cells(14, 2).Value) Then
                Range("B13", "B15").Locked = True
            End If
        Case "$B$15"
            If IsNumeric(Cells(15, 2).Value) Then
                Range("B13", "B14").Locked = True
            End If
    End Select

End Sub

Open in new window

0
 
Rob HensonIT & Database AssistantCommented:
You can apply Data Validation to the three cells such that only one cell gets completed by using a COUNT of the range B13:B15 and checking that it is less than or equal to 1.

Thanks
Rob H
0
 
Rob HensonIT & Database AssistantCommented:
Highlight cells B13:B15 and select Data Validation.

Choose Custom and enter following formula:

=COUNTA($B$13:$B$15)<=1

Thanks
Rob H
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
dnldsnAuthor Commented:
Rob

Nicely done. Thanks
0
 
dnldsnAuthor Commented:
To: MartinLiss

When I try this solution I get the following error message:

"Run-time error '1004'
Unable to set the Locked property of the Range class"

Private Sub Worksheet_Change(ByVal Target As Range)
    Select Case Target.Address
        Case "$B$13"
            If IsNumeric(Cells(13, 2).Value) Then
                Range("B14", "B15").Locked = True
            End If
        Case "$B$14"
            If IsNumeric(Cells(14, 2).Value) Then
                Range("B13", "B15").Locked = True
            End If
        Case "$B$15"
            If IsNumeric(Cells(15, 2).Value) Then
                Range("B13", "B14").Locked = True
            End If
    End Select

End Sub
0
 
Rob HensonIT & Database AssistantCommented:
I was going to comment that I didn't think that would work cos need to unprotect the sheet first, in the macro possible, and reprotect after.

Rob
0
 
dnldsnAuthor Commented:
Rob

Made the change to unprotect / protect worksheet and it now works.

Thanks again.
0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 3
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now