Добро пожаловать на SO. Ваш код выглядит хорошо, все, что вам нужно сделать, это добавить еще несколько If
условий. Попробуйте:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim col As Long
Dim tDate As Date
tDate = Date 'today's date
With ThisWorkbook.Sheets("Sheet1")
'.Unprotect "ABCDE"
For col = 0 To .Range("G9:K44").Columns.Count - 1
'check if row 8 doesn't have today's date
If .Range("G8").Offset(0, col).Value <> tDate Then
'if today is Sunday and row 8 has Sunday
If Format(tDate, "dddd") = "Sunday" And Format(.Range("G8").Offset(0, col).Value, "dddd") = "Sunday" Then
.Range("G8:G44").Offset(0, col).EntireColumn.Locked = False
Else
.Range("G8:G44").Offset(0, col).EntireColumn.Locked = True
End If
End If
Next col
'.Protect "ABCDE"
'.EnableSelection = xlNoRestrictions
End With
End Sub
Измените tDate
на другую дату для проверки кода, например tDate = '2020-02-16'
(воскресенье).