
Nemusíte nic zamykat. Do listu vložte následující událostní proceduru
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim N As Long
N = Target.Row
If Target.Rows.Count > 1 Then
Cells(N, 1).Select: Exit Sub
End If
If Cells(N, 1) <> Int(Now) Then
Cells(N, 1).Select: Exit Sub
End If
End Sub
Pak bude možné vybrat buňky pouze v řádku s dnešním datem. Výběr v jiných řádcích povede vždy do sloupce A vybraného řádku.

Dík za pochvalu. Podobnou filozofii ochrany buněk někdy používám pro ochranu vzorců před nechtěným přepsáním místo zamykání buněk a listů.
Pro laického uživatele Excelu bývá často obtížné udržet pořádek v zámcích na buňkách v kombinaci se stavem listu. Běžné zamčení listu také vyřazuje z použití řadu operací s listem a jemnější nastavení režimu pro zamčený list bývá pro laiky oříšek.
Použití šablony, která chrání existující vzorce testem na výskyt vzorce v aktuální oblasti, žádné speciální nastavování listů nevyžaduje. Navíc zůstávají plně funkční všechny operace, které jsou zamčením listu blokované.
K používání výše zmíněné šablony zatím nemám žádné negativní reakce.
Maximus(15.4.2016 9:38)citovat#031131 
Zdravím, teď je to dokonalé. Jistě se najde nějaký jiný šikula, který vymyslí něco jiného jak to obejít, ale pro běžného uživatele je to asi dostatečné zabezpečené. Pro vovka.h dávám palec nahoru.
Přeji hezký den.

Sub subUnlockIf()
ActiveSheet.Protect UserInterfaceOnly:=True
Cells.Locked = True
Columns(1).Locked = False
With ActiveSheet.UsedRange.Columns(1)
Range(Application.ConvertFormula("R" & Join(Filter(Evaluate("=TRANSPOSE(IF(" & .Address & ">=" & CLng(Date) & ",ROW(1:" & .Rows.Count & "),""#""))"), "#", False), ",R"), xlR1C1, xlA1, True)).Locked = False
End With 'ActiveSheet.UsedRange.Columns(1)
End Sub
Volat v Open a Change