Home |
Search |
Today's Posts |
#1
Posted to microsoft.public.excel.programming
|
|||
|
|||
Problem with using Protect when userinterfaceonly:=True
Hi
On workbook open, a procedure runs through all sheets and sets following: Worksheets(i).Protect password:="***", userinterfaceonly:=True This worked fine, until I started developing a userform which calculates some stuff and lets the user click a button to enter the result into a cell. What happens now is that any changes to any sheet (triggering WorkSheet_Change event) works fine, *except* when the data is entered via the userform. When this happens, the WorkSheet_Change procedure runs correctly up to a point whe Worksheets("summary").Range("i" & h & ":j" & h).Interior.ColorIndex = 34 always fails. (*only* and always at this line. Any normal user entry into a cell triggers this procedure without fault. (including this line every time). The error generated is: Run time error '1004' Unable to set the ColorIndex property of the Interior class A bodge to get around this problem is that I wrap the line which places the userform result into the cell with a sheet unprotect/protect. Although this solves the problem, I can't figure out why. I shouldn't need to make this bodge. This is part of the code in the button click event procedure to illustrate the bodge. Worksheets("summary").UnProtect password:="***" ActiveSheet.Cells(ActiveCell.Row, 11) = r ' only from this trigger does the above failure occur Worksheets("summary").Protect password:="***", userinterfaceonly:=True Can anyone point me in a direction that may lead to a solution for this problem. I could post whatever code I have if needed, but have limited to above in the first instance. Any help would be very much appreciated. regards, -- Les Hay, Livingston. Scotland leshay at leshay dot freeserve dot co dot uk |
#2
Posted to microsoft.public.excel.programming
|
|||
|
|||
Problem with using Protect when userinterfaceonly:=True
Are you using ActiveX buttons to launch the form? If so make sure you set
the TakeFocus property to false. I'm thinking the protection thing could just be a different manifestation of this well known bug. I've had the bug you mention where I get unable to set interior class... when code is launched by the user via a button. My money is on it being something to do with this. I'd try doing some things like launching the form in different ways (via the immediate window (frmxxx.show)). -- Regards, Bill Lunney www.billlunney.com "Les" wrote in message ... Hi On workbook open, a procedure runs through all sheets and sets following: Worksheets(i).Protect password:="***", userinterfaceonly:=True This worked fine, until I started developing a userform which calculates some stuff and lets the user click a button to enter the result into a cell. What happens now is that any changes to any sheet (triggering WorkSheet_Change event) works fine, *except* when the data is entered via the userform. When this happens, the WorkSheet_Change procedure runs correctly up to a point whe Worksheets("summary").Range("i" & h & ":j" & h).Interior.ColorIndex = 34 always fails. (*only* and always at this line. Any normal user entry into a cell triggers this procedure without fault. (including this line every time). The error generated is: Run time error '1004' Unable to set the ColorIndex property of the Interior class A bodge to get around this problem is that I wrap the line which places the userform result into the cell with a sheet unprotect/protect. Although this solves the problem, I can't figure out why. I shouldn't need to make this bodge. This is part of the code in the button click event procedure to illustrate the bodge. Worksheets("summary").UnProtect password:="***" ActiveSheet.Cells(ActiveCell.Row, 11) = r ' only from this trigger does the above failure occur Worksheets("summary").Protect password:="***", userinterfaceonly:=True Can anyone point me in a direction that may lead to a solution for this problem. I could post whatever code I have if needed, but have limited to above in the first instance. Any help would be very much appreciated. regards, -- Les Hay, Livingston. Scotland leshay at leshay dot freeserve dot co dot uk |
#3
Posted to microsoft.public.excel.programming
|
|||
|
|||
Problem with using Protect when userinterfaceonly:=True
Hi
Further to this post. The problem was of my own making - how often that is the case! I had a couple of variables declared as wrong Type. Changing to correct type (Double) seems to have eliminated the problems. As to why the problems appeared in the manner that they did, and as to why the above fixed them, still beats me - but again, that's not exactly hard to do :=) I am now happy in as much as I have managed to eliminate one area (the bodges) that annoyed me. Thanks for your help Bill regards, -- Les Hay, Livingston. Scotland "Bill Lunney" wrote in message ... Are you using ActiveX buttons to launch the form? If so make sure you set the TakeFocus property to false. I'm thinking the protection thing could just be a different manifestation of this well known bug. I've had the bug you mention where I get unable to set interior class... when code is launched by the user via a button. My money is on it being something to do with this. I'd try doing some things like launching the form in different ways (via the immediate window (frmxxx.show)). -- Regards, Bill Lunney www.billlunney.com "Les" wrote in message ... Hi On workbook open, a procedure runs through all sheets and sets following: Worksheets(i).Protect password:="***", userinterfaceonly:=True This worked fine, until I started developing a userform which calculates some stuff and lets the user click a button to enter the result into a cell. What happens now is that any changes to any sheet (triggering WorkSheet_Change event) works fine, *except* when the data is entered via the userform. When this happens, the WorkSheet_Change procedure runs correctly up to a point whe Worksheets("summary").Range("i" & h & ":j" & h).Interior.ColorIndex = 34 always fails. (*only* and always at this line. Any normal user entry into a cell triggers this procedure without fault. (including this line every time). The error generated is: Run time error '1004' Unable to set the ColorIndex property of the Interior class A bodge to get around this problem is that I wrap the line which places the userform result into the cell with a sheet unprotect/protect. Although this solves the problem, I can't figure out why. I shouldn't need to make this bodge. This is part of the code in the button click event procedure to illustrate the bodge. Worksheets("summary").UnProtect password:="***" ActiveSheet.Cells(ActiveCell.Row, 11) = r ' only from this trigger does the above failure occur Worksheets("summary").Protect password:="***", userinterfaceonly:=True Can anyone point me in a direction that may lead to a solution for this problem. I could post whatever code I have if needed, but have limited to above in the first instance. Any help would be very much appreciated. regards, -- Les Hay, Livingston. Scotland leshay at leshay dot freeserve dot co dot uk |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
Userinterfaceonly | Excel Worksheet Functions | |||
Excel macro protect problem | Excel Discussion (Misc queries) | |||
UserInterfaceOnly & Password Protection | Excel Discussion (Misc queries) | |||
UserInterfaceOnly | Excel Discussion (Misc queries) | |||
Protection UserInterfaceOnly reading Hidden Formulas | Excel Programming |