lock/unlock cells

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

say i have 2 cells B20 and B21. when i enter a number in B20 i want B21 to
lock, i also want this to work via versa so if i enter a number in B21 i want
B20 to lock. this is so a number cannot be put in both cells
is this possible
thankyou john tempest
 
Try this:

Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect
If Range("B20").Value <> "" Then
Range("B21").Locked = True
Else
Range("B21").Locked = False
End If
If Range("B21").Value <> "" Then
Range("B20").Locked = True
Else
Range("B20").Locked = False
End If
ActiveSheet.Protect
End Sub
 
thank you ian but i am still having problems. i get the error ambiguous which
i can understand as i have the following code already in the sheet. how do i
get both sets of code to work on the same sheet
thans again john
Private Sub Worksheet_Change(ByVal Target As Range)
Dim WatchRange As Range

Set WatchRange = Range("B4:B7,B25,B16:H16")

If Application.CountA(WatchRange) = WatchRange.Count Then

Sheet111.Visible = xlSheetVisible
Else
Sheet111.Visible = xlSheetVeryHidden
End If
End Sub
 
I think the problem is that you have 2 subs with the same name. If you put
all the code under the same sub, you should be OK.

If you paste my code immediately after yours, then delete the End Sub at the
end of your code and the Private Sub line at the beginning of mine, it
should work. As my code protects the sheet after runnign, you may find you
have to move the Activesheet.Unprotect line to the top of the code to avoid
any problems.
 
thank you ian that now works great
john

Ian said:
I think the problem is that you have 2 subs with the same name. If you put
all the code under the same sub, you should be OK.

If you paste my code immediately after yours, then delete the End Sub at the
end of your code and the Private Sub line at the beginning of mine, it
should work. As my code protects the sheet after runnign, you may find you
have to move the Activesheet.Unprotect line to the top of the code to avoid
any problems.
 
ian
i have come across an alternative that might interest you

Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Trim(Range("B20").Value) <> "" And ActiveCell.Address = "$B$21" Then
Range("B20").Select
If Trim(Range("B21").Value) <> "" And ActiveCell.Address = "$B$20" Then
Range("B21").Select
End Sub
regards john
 
As ever, there are different ways to do things. This simply redirects the
active cell to the one with data in it, thereby making it impossible to
enter data in the second cell. It also does away with the need to lock the
cells and the sheet. Unless you need to lock the sheeet for other reasons,
it appears to be a more elegant solution.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top