Hi,
I am trying to create a desk booking tool which only allows bookings to be made using a defined list up to 30 days in the future. I have the below code, pieced together using other codes, as I am not an expert on VBA, but I cannot seem to get it to work as I would like.
I am unable to upload anything from the machine I am using so having to improvise a little
Essentially, I would like to unlock rows within the range E19:AA448 up until a date 30 days in the future (this date can be input into cell A18 using =TODAY()+30). For example, the sheet starts on 6/5/24, if it was that date, I would like to allow only rows within the defined range to be selected as long as the dates within the range A19:A448 doesn't exceed 30 days after the date of 6/5/24, which will be a rolling date based on the current date each time it is opened. Within this example, this would open up rows until 5/6/24.
Code:Option Explicit Dim blnUnlockedAllCells As Boolean Private Sub Workbook_Open() Dim wksTarget As Worksheet Dim rngDate As Range Dim rngData As Range Dim r As Long Dim LastRow As Long Dim LastCol As Long Dim blnUnlockedAllCells As Boolean Const Pwd As String = "pwd" Set wksTarget = ThisWorkbook.Worksheets("Vertical") Set rngData = wksTarget.Range("$A$19:$AA$448") If Not blnUnlockedAllCells Then wksTarget.Unprotect Password:=Pwd wksTarget.Cells.Locked = True rngData.Locked = False wksTarget.Protect Password:=Pwd, userinterfaceonly:=True blnUnlockedAllCells = True End If For r = 19 To 448 If CDate(rngData(r, 1)) <= Date + 30 Then On Error Resume Next rngData.Rows(r).Locked = True On Error GoTo 0 End If Next End Sub
Bookmarks