A Microsoft Office (Excel, Word) forum. OfficeFrustration

If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.

Go Back   Home » OfficeFrustration forum » Microsoft Excel » General Discussion
Site Map Home Register Authors List Search Today's Posts Mark Forums Read  

Lock sheets automatically



 
 
Thread Tools Display Modes
  #1  
Old November 18th, 2009, 01:39 AM posted to microsoft.public.excel.misc
Thu Ng[_2_]
external usenet poster
 
Posts: 1
Default Lock sheets automatically

Hi everyone,
I have 26 fortnightly timesheets in a workbook for every staff and would
like to lock each timesheet after some days.Can you please help me to fix my
code as the follows:

Select Case s_worksheet
Case "TS1", "TS2", "TS3"
If (DateDiff("d", B12, Date) 6) Then
s_worksheet.Unprotect "admin"

s_worksheet.Range("C6:C12,D612,F6:F12,G6:G10,H6: H10,I6:I10").Locked = True
s_worksheet.Protect "admin"
End If
Case Else: End
End Select


Many thanks for you help in advance


  #2  
Old November 18th, 2009, 03:04 AM posted to microsoft.public.excel.misc
Dave Peterson
external usenet poster
 
Posts: 19,791
Default Lock sheets automatically

Maybe...

Dim s_worksheet As Worksheet

For Each s_worksheet In ActiveWorkbook.Worksheets
Select Case UCase(s_worksheet.Name)
Case "TS1", "TS2", "TS3"
If DateDiff("d", s_worksheet.Range("B12").Value, Date) 6 Then
s_worksheet.Unprotect "admin"
s_worksheet.Range("C6:C12,D612,F6:F12,G6:G10,H6: H10,I6:I10") _
.Locked = True
s_worksheet.Protect "admin"
End If
End Select
Next s_worksheet

Using End as in:
Case Else: End

Is usually a very bad idea. It resets public/static variables. There are nicer
ways to exit a routine.



Thu Ng wrote:

Hi everyone,
I have 26 fortnightly timesheets in a workbook for every staff and would
like to lock each timesheet after some days.Can you please help me to fix my
code as the follows:

Select Case s_worksheet
Case "TS1", "TS2", "TS3"
If (DateDiff("d", B12, Date) 6) Then
s_worksheet.Unprotect "admin"

s_worksheet.Range("C6:C12,D612,F6:F12,G6:G10,H6: H10,I6:I10").Locked = True
s_worksheet.Protect "admin"
End If
Case Else: End
End Select

Many thanks for you help in advance


--

Dave Peterson
  #3  
Old November 18th, 2009, 03:16 AM posted to microsoft.public.excel.misc
JLatham
external usenet poster
 
Posts: 1,896
Default Lock sheets automatically

Decide when you want to make the check for the date 6 days. Two logical
choices would seem to be the
Workbook_Open()
or the
Workbook_BeforeClose()
events.

Once you make that decision, simply 'wrap' your existing Select Case block
in a loop that tests each worksheet.

The Workbook_Open() event would look something like this

Private Sub Workbook_Open()
Dim s_worksheet As Worksheet
For Each s_worksheet In ThisWorkbook.Workbooks
Select Case s_worksheet.Name
Case Is = "TS1", "TS2", "TS3"
If (DateDiff("d", s_worksheet.Range("B12"), Date) 6) Then
s_worksheet.Unprotect "admin"
s_worksheet.Range("C6:C12,D612,F6:F12,G6:G10,H6: H10,I6:I10").Locked = True
s_worksheet.Protect "admin"
End If
End Select
Next
End Sub


"Thu Ng" wrote:

Hi everyone,
I have 26 fortnightly timesheets in a workbook for every staff and would
like to lock each timesheet after some days.Can you please help me to fix my
code as the follows:

Select Case s_worksheet
Case "TS1", "TS2", "TS3"
If (DateDiff("d", B12, Date) 6) Then
s_worksheet.Unprotect "admin"

s_worksheet.Range("C6:C12,D612,F6:F12,G6:G10,H6: H10,I6:I10").Locked = True
s_worksheet.Protect "admin"
End If
Case Else: End
End Select


Many thanks for you help in advance


 




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Forum Jump


All times are GMT +1. The time now is 12:52 AM.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 OfficeFrustration.
The comments are property of their posters.