Cell Protection Query

S

Sue C

I have a spreadsheet which allows users to enter values, and then
automatically calculates various summaries from this. Before protecting the
sheet I have Locked the cells which have formulas in them, but left the
others Unlocked for data entry. This works fine until the user tries to
delete an entry they have made into an Unlocked cell, at which point they
receive an error message saying that the sheet is protected. As they are
only trying to clear an entry that they have made, I want to allow them to do
so, and can't really understand why Excel is blocking this when the cell
isn't Locked. Any suggestions? Thanks. Sue
 
D

Dave Peterson

Are you sure that this is what's happening?

Could it be that the users are clearing the cells (not clearing the contents),
then get the error when they try to add a new value to that previously unlocked
cell?

It this describes the problem, then you have a couple of choices.

#1. Teach the user to use Edit|Clear|Contents (not Edit|Clear|All) or just hit
the delete key to clear the contents of the cell.

#2. Change the normal style of your workbook so that the default cell
protection is not locked.

In xl2003 menus:
Format|style
Select Normal from the dropdown at the top
Click the modify button
Select the protection tab and uncheck Locked

Now when the users clear (completely clear--not clear contents), the cell will
return to normal--and you've made the normal protection Unlocked.

But Styles live in workbooks. You'll have to do this for each workbook that
needs it.
 
S

Sue C

Yes, I haven't gone live with the spreadsheet yet, it's just me testing it,
so I'm sure it's what's happening. I can 'empty' a cell by pressing the
space bar (so, effectively overtyping my previous entry), but if I press the
Delete key then I get the sheet protection message. Since my original post
I've done some more playing around and it doesn't seem that all cells are
affected. I can't be absolutely sure, but suspect the ones that are acting
strangely are ones where cells have been merged. Is this likely to be the
cause? I'm using 2007 if that makes any difference.
 
S

Sue C

I've just disproved my last theory. I have some cells where data entry is
from a drop-down box, and these also cover merged cells. In these instances
I am able to clear the contents by pressing the delete key, or by using Clear
Contents after right-clicking the cell.
 
D

Dave Peterson

First, I wouldn't use the spacebar to clear a cell. The cell would actually
contain a character (or lots of characters).

Second, I'm not sure about the merged cells--but maybe you could unprotect the
worksheet. And unlock the merged cells. Then reprotect the sheet and test.

If that doesn't work, the next test is to unprotect the worksheet, unmerge the
cells, unlock all the cells in the mergearea, merge those cells, and reportect
the sheet and test.

I try my best to stay away from merged cells!

========
Actually, the first thing I would test is to make sure that there is no macro
running (event or anything else).

I'd close excel and restart it in safe mode:

Close excel
windows start button|Run
excel /safe

then file|open the workbook and test.

You could have an event macro that's firing -- or you may have a macro that's
taken over the delete key????

And since this test is easier that fiddling with all those merged cells, sheet
protection, ..., I'd try it first.
 
S

Sue C

I think we are getting somewhere (by which I mean you are getting somewhere,
and if only I understood where)!

Macros are completely outside of my range of knowledge, however, yesterday I
copied one from this forum, which was designed to allow text wrapping and row
height auto-adjusting in Merged cells.

By going into my spreadsheet in Safe Mode my problem with deleting cell
entries disappears, so I presume the problem is in someway connected to the
macro. But as it may as well be written in Greek to me, I'm hoping you can
spot the error. I've copied the contents below!

Thanks for your help. Sue

PS. And yes, I now fully realise that Merged Cells Are the Root of All Evil!

Macro Content:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim NewRwHt As Single
Dim cWdth As Single, MrgeWdth As Single
Dim c As Range, cc As Range
Dim ma As Range


With Target
If .MergeCells And .WrapText Then
Set c = Target.Cells(1, 1)
cWdth = c.ColumnWidth
Set ma = c.MergeArea
For Each cc In ma.Cells
MrgeWdth = MrgeWdth + cc.ColumnWidth
Next
Application.ScreenUpdating = False
ma.MergeCells = False
c.ColumnWidth = MrgeWdth
c.EntireRow.AutoFit
NewRwHt = c.RowHeight
c.ColumnWidth = cWdth
ma.MergeCells = True
ma.RowHeight = NewRwHt
cWdth = 0: MrgeWdth = 0
Application.ScreenUpdating = True
End If
End With
End Sub
 
D

Dave Peterson

I don't see anything that would cause trouble in the code.

But I did have to protect the worksheet and allow the user to:
format cells, format columns and format rows.

But after I did that, the code worked ok.

But that was with just minor testing (and in xl2003).

Maybe you could describe the range that was merged,
each of the cell's (in the mergearea) "lockedness" property,
and the options that you chose when you protected the worksheet.





Sue said:
I think we are getting somewhere (by which I mean you are getting somewhere,
and if only I understood where)!

Macros are completely outside of my range of knowledge, however, yesterday I
copied one from this forum, which was designed to allow text wrapping and row
height auto-adjusting in Merged cells.

By going into my spreadsheet in Safe Mode my problem with deleting cell
entries disappears, so I presume the problem is in someway connected to the
macro. But as it may as well be written in Greek to me, I'm hoping you can
spot the error. I've copied the contents below!

Thanks for your help. Sue

PS. And yes, I now fully realise that Merged Cells Are the Root of All Evil!

Macro Content:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim NewRwHt As Single
Dim cWdth As Single, MrgeWdth As Single
Dim c As Range, cc As Range
Dim ma As Range

With Target
If .MergeCells And .WrapText Then
Set c = Target.Cells(1, 1)
cWdth = c.ColumnWidth
Set ma = c.MergeArea
For Each cc In ma.Cells
MrgeWdth = MrgeWdth + cc.ColumnWidth
Next
Application.ScreenUpdating = False
ma.MergeCells = False
c.ColumnWidth = MrgeWdth
c.EntireRow.AutoFit
NewRwHt = c.RowHeight
c.ColumnWidth = cWdth
ma.MergeCells = True
ma.RowHeight = NewRwHt
cWdth = 0: MrgeWdth = 0
Application.ScreenUpdating = True
End If
End With
End Sub
 
S

Sue C

Easy bit first: When protecting the worksheet I have everything EXCEPT the
following options checked:

Insert Hyperlinks
Delete Columns
Use Autofilter
Use PivotTable Reports

There are numerous columns that have been merged in various parts of the
sheet. For example, in rows 21 to 41, columns B,C & D have been merged as
have (E,F&G), (H,I &J), (K,L,& M), (N,O&P), (Q,R&S), (T,U &V) and (W,X,Y &Z).
These are the cells I'm having the problem with. They are all left Unlocked
(with all except the above options ticked). But for some reason users can
enter data, but not delete it.

Does this help explain? Thanks for trying. Sue
 
D

Dave Peterson

If those are the only things that you have checked, then I don't think it's the
code.

In fact, I don't think your macro is firing--either it's in the wrong spot or
you didn't enable macros when you opened the workbook.

You can verify this by adding a line:

Private Sub Worksheet_Change(ByVal Target As Range)
msgbox "Hi from _Change"
Dim NewRwHt As Single
...

Then do a test to see if you see that message.

But I still don't have a guess why you're having the trouble.


Sue said:
Easy bit first: When protecting the worksheet I have everything EXCEPT the
following options checked:

Insert Hyperlinks
Delete Columns
Use Autofilter
Use PivotTable Reports

There are numerous columns that have been merged in various parts of the
sheet. For example, in rows 21 to 41, columns B,C & D have been merged as
have (E,F&G), (H,I &J), (K,L,& M), (N,O&P), (Q,R&S), (T,U &V) and (W,X,Y &Z).
These are the cells I'm having the problem with. They are all left Unlocked
(with all except the above options ticked). But for some reason users can
enter data, but not delete it.

Does this help explain? Thanks for trying. Sue
 
S

Sue C

Just to be clear, those are the only things I DON'T have checked.

The macro did solve the text-wrapping / row height issue, so I'd say it is
running, but will try adding your line anyway. Sue
 
S

Sue C

Hmmm, getting nowhere here. As I mentioned before, I know nothing about
Macros, so please be patient with me! I inserted your script at the top of
the previous macro, but nothing happened. Could you explain to me in more
detail what I'm meant to do? Thanks.

Sue C said:
Just to be clear, those are the only things I DON'T have checked.

The macro did solve the text-wrapping / row height issue, so I'd say it is
running, but will try adding your line anyway. Sue
 
D

Dave Peterson

I'm confused...

If you don't see the msgbox, then the macro that you added the code to isn't
running. But you said that the event macro fixed the row height problem you
were having.

So that means that either you didn't add the msgbox line to the correct
procedure or the fix for the row height problem wasn't really working.

But in either case, it means that the macro had nothing to do with the
protection issue.

Maybe you have other macros running that you haven't noticed????
 
S

Sue C

If you're confused, I fear there is no hope for me!!!!

I really really don't know anything about Macros. I just copied and pasted
the one from this forum into the window it said I should paste it into. As a
check, I have just removed it, and the row height/wrap problem has returned
BUT the protection issue has disappeared. So it must be the macro after all.

As for the message that you added, I quite probably entered it in the wrong
place in the macro, or did something else completely wrong.

With the macro in place even though the cells are Unlocked, when I look at
the Protection settings the Locked box is filled solid (ie. how it looks when
you have selected a group of cells, some of which are Locked and some
Unlocked). This must be something the macro is doing, but we're back to
where we started - with me knowing nothing about macros!

Over to you...?
 
D

Dave Peterson

I think you have to find the event macro that's running and share that.

Rightclick on the worksheet tab and select view code. Copy the code you find
into your follow up message.

As for the shaded checkbox...

That means you have more than one cell selected and it has a combination of both
locked and unlocked cells.

Sue said:
If you're confused, I fear there is no hope for me!!!!

I really really don't know anything about Macros. I just copied and pasted
the one from this forum into the window it said I should paste it into. As a
check, I have just removed it, and the row height/wrap problem has returned
BUT the protection issue has disappeared. So it must be the macro after all.

As for the message that you added, I quite probably entered it in the wrong
place in the macro, or did something else completely wrong.

With the macro in place even though the cells are Unlocked, when I look at
the Protection settings the Locked box is filled solid (ie. how it looks when
you have selected a group of cells, some of which are Locked and some
Unlocked). This must be something the macro is doing, but we're back to
where we started - with me knowing nothing about macros!

Over to you...?
 
S

Sue C

I've removed the macro now, so there's no code to copy. The one that was
there previously was the one I copied yesterday, but I've put it below again
to save you trawling back.

Re. the shaded check box - that was what I was getting at - it was acting as
if I had more than one cell selected, but I didn't. Removing the macro has
resolved the problem, so there must be a gremlin in there somewhere. Sue

Private Sub Worksheet_Change(ByVal Target As Range)
Dim NewRwHt As Single
Dim cWdth As Single, MrgeWdth As Single
Dim c As Range, cc As Range
Dim ma As Range


With Target
If .MergeCells And .WrapText Then
Set c = Target.Cells(1, 1)
cWdth = c.ColumnWidth
Set ma = c.MergeArea
For Each cc In ma.Cells
MrgeWdth = MrgeWdth + cc.ColumnWidth
Next
Application.ScreenUpdating = False
ma.MergeCells = False
c.ColumnWidth = MrgeWdth
c.EntireRow.AutoFit
NewRwHt = c.RowHeight
c.ColumnWidth = cWdth
ma.MergeCells = True
ma.RowHeight = NewRwHt
cWdth = 0: MrgeWdth = 0
Application.ScreenUpdating = True
End If
End With
End Sub
 
D

Dave Peterson

I still don't see how this macro can work on your protected sheet.

But I don't think you tried all the suggestions in my second post--this one
especially:

If that doesn't work, the next test is to unprotect the worksheet, unmerge the
cells, unlock all the cells in the mergearea, merge those cells, and reportect
the sheet and test.

Sue said:
I've removed the macro now, so there's no code to copy. The one that was
there previously was the one I copied yesterday, but I've put it below again
to save you trawling back.

Re. the shaded check box - that was what I was getting at - it was acting as
if I had more than one cell selected, but I didn't. Removing the macro has
resolved the problem, so there must be a gremlin in there somewhere. Sue

Private Sub Worksheet_Change(ByVal Target As Range)
Dim NewRwHt As Single
Dim cWdth As Single, MrgeWdth As Single
Dim c As Range, cc As Range
Dim ma As Range

With Target
If .MergeCells And .WrapText Then
Set c = Target.Cells(1, 1)
cWdth = c.ColumnWidth
Set ma = c.MergeArea
For Each cc In ma.Cells
MrgeWdth = MrgeWdth + cc.ColumnWidth
Next
Application.ScreenUpdating = False
ma.MergeCells = False
c.ColumnWidth = MrgeWdth
c.EntireRow.AutoFit
NewRwHt = c.RowHeight
c.ColumnWidth = cWdth
ma.MergeCells = True
ma.RowHeight = NewRwHt
cWdth = 0: MrgeWdth = 0
Application.ScreenUpdating = True
End If
End With
End Sub
 

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

Top