![]() |
Locking/Unlocking sheets using a range.
Currently I'm administrating a large spreadsheet. I've built in an administrative page so I can quickly unlock and modify the workbook as needed. However, I'm always interested in making my coding more efficient. This is an example of something I think might be fixable: Private Sub Lockall() PW = Range("C2").Value Application.ScreenUpdating = False ActiveWorkbook.Protect (PW) Worksheets("Site 1").Protect (PW) Worksheets("Overview").Protect (PW) Worksheets("Site 2").Protect (PW) Worksheets("Site 3").Protect (PW) Worksheets("Site 4").Protect (PW) Worksheets("Site 5").Protect (PW) Worksheets("Site 6").Protect (PW) Worksheets("Site 7").Protect (PW) ........(Truncated)..... Range("C4").Value = "Locked" Application.ScreenUpdating = True End Sub Such programming becomes tiresome when I add new sheets into the workbook because I have to modify the protect/unprotect hide/unhide codes. Is there a way that I can simplify it using a range? I'd think it would look something like this, but all my attempts have been met with errors. Private Sub Lockall() PW = Range("C2").Value Application.ScreenUpdating = False ActiveWorkbook.Protect (PW) Worksheets(range("A1":"A25")).Protect (PW) Range("C4").Value = "Locked" Application.ScreenUpdating = True End Sub -- wilro85 ------------------------------------------------------------------------ wilro85's Profile: http://www.excelforum.com/member.php...o&userid=26935 View this thread: http://www.excelforum.com/showthread...hreadid=572449 |
Locking/Unlocking sheets using a range.
See if this get you started on something:
Sub Lockem() Dim PW As String Dim oSht As Worksheet PW = "YoDaMan" For Each oSht In ActiveWorkbook.Worksheets oSht.Protect (PW) Next End Sub HTH. Best wishes Harald "wilro85" skrev i melding ... Currently I'm administrating a large spreadsheet. I've built in an administrative page so I can quickly unlock and modify the workbook as needed. However, I'm always interested in making my coding more efficient. This is an example of something I think might be fixable: Private Sub Lockall() PW = Range("C2").Value Application.ScreenUpdating = False ActiveWorkbook.Protect (PW) Worksheets("Site 1").Protect (PW) Worksheets("Overview").Protect (PW) Worksheets("Site 2").Protect (PW) Worksheets("Site 3").Protect (PW) Worksheets("Site 4").Protect (PW) Worksheets("Site 5").Protect (PW) Worksheets("Site 6").Protect (PW) Worksheets("Site 7").Protect (PW) .......(Truncated)..... Range("C4").Value = "Locked" Application.ScreenUpdating = True End Sub Such programming becomes tiresome when I add new sheets into the workbook because I have to modify the protect/unprotect hide/unhide codes. Is there a way that I can simplify it using a range? I'd think it would look something like this, but all my attempts have been met with errors. Private Sub Lockall() PW = Range("C2").Value Application.ScreenUpdating = False ActiveWorkbook.Protect (PW) Worksheets(range("A1":"A25")).Protect (PW) Range("C4").Value = "Locked" Application.ScreenUpdating = True End Sub -- wilro85 ------------------------------------------------------------------------ wilro85's Profile: http://www.excelforum.com/member.php...o&userid=26935 View this thread: http://www.excelforum.com/showthread...hreadid=572449 |
Locking/Unlocking sheets using a range.
Works like a charm. Thanks. -- wilro85 ------------------------------------------------------------------------ wilro85's Profile: http://www.excelforum.com/member.php...o&userid=26935 View this thread: http://www.excelforum.com/showthread...hreadid=572449 |
Locking/Unlocking sheets using a range.
Ok wait... something isn't right. For some reason this code works wit .protect/unprotect but doesn't seem to have the same results wit .visible. Why not and what do I need to do? Private Sub Unlockall() Application.ScreenUpdating = False Dim PW As String Dim oSht As Worksheet PW = Range("C2").Value For Each oSht In ActiveWorkbook.Worksheets oSht.Unprotect (PW) Next Range("C4").Value = "Unlocked" Application.ScreenUpdating = True End Sub Private Sub unhide() Application.ScreenUpdating = False Dim PW As String Dim oSht As Worksheet For Each oSht In ActiveWorkbook.Worksheets oSht.Visible = xlSheetVisible Next Application.ScreenUpdating = True End Su -- wilro8 ----------------------------------------------------------------------- wilro85's Profile: http://www.excelforum.com/member.php...fo&userid=2693 View this thread: http://www.excelforum.com/showthread.php?threadid=57244 |
Locking/Unlocking sheets using a range.
Your code is fine, works well here. How do you experience that it doesn't
work ? Is your workbook protected ? Is the workbook in question not the active workbook ? Note also that an xls file needs at least one visible sheet, so hiding all the same way will err. Best wishes Harald "wilro85" skrev i melding ... Ok wait... something isn't right. For some reason this code works with protect/unprotect but doesn't seem to have the same results with visible. Why not and what do I need to do? Private Sub Unlockall() Application.ScreenUpdating = False Dim PW As String Dim oSht As Worksheet PW = Range("C2").Value For Each oSht In ActiveWorkbook.Worksheets oSht.Unprotect (PW) Next Range("C4").Value = "Unlocked" Application.ScreenUpdating = True End Sub Private Sub unhide() Application.ScreenUpdating = False Dim PW As String Dim oSht As Worksheet For Each oSht In ActiveWorkbook.Worksheets oSht.Visible = xlSheetVisible Next Application.ScreenUpdating = True End Sub -- wilro85 ------------------------------------------------------------------------ wilro85's Profile: http://www.excelforum.com/member.php...o&userid=26935 View this thread: http://www.excelforum.com/showthread...hreadid=572449 |
Locking/Unlocking sheets using a range.
Sure enough, I ran into the "You need to have something showing, stupid" type error message. I haven't figured out the mechanics of how pages are hidden yet to figure out the best way to limit the last page to hide. The page that I don't want hidden is called, "Summary" this is what I've been expirmenting with. Private Sub reset() Call Unlockall Application.ScreenUpdating = False Dim PW As String Dim oSht As Worksheet On Error Resume Next For Each oSht In ActiveWorkbook.Worksheets On Worksheets("summary") GoTo ln47 oSht.Visible = False Next 'Worksheets("summary").Visible = True 'Worksheets("summary").Select 'Worksheets("subscriber equipment").Visible = False Call Lockall Application.ScreenUpdating = True MsgBox ("The form has been returned to default operation.") End Sub The parts that I've appostophied out was when I thought that it was hiding them in alphabetical order, but another time I ran the macro it ended up with another sheet unhidden. The "On Worksheets("summary") GoTo ln47" didn't work at all, but I've not played with it that much, yet. -- wilro85 ------------------------------------------------------------------------ wilro85's Profile: http://www.excelforum.com/member.php...o&userid=26935 View this thread: http://www.excelforum.com/showthread...hreadid=572449 |
All times are GMT +1. The time now is 01:58 PM. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com