V prvom rade, na to aby aspon tak-nejak fungovalo moje riešenie, tak do pomocnej premennej by som uložil ten dátum z bunky D14 (31/12/2012).
Čiže, vytvorím pomocou Správcov Názvov premennú DatumStart s odkazom na =DATUM(2012;12;31).
Do D14 potom vzorec =DatumStart+SLOUPEC()-SLOUPEC($D$14)+(ŘÁDEK()-ŘÁDEK($D$14))*7
Ten rozkopírovať do zelenej oblasti (možno i do stĺpcov I a J).
Samotný kód:
Do kódového okna modulu:
Option Explicit
Public LastSelection As Range
Public LastFormula As String
Do kódového okna ThisWorkbook:
Option Explicit
Private Sub Workbook_Open()
Set LastSelection = Sheets("Leden").Range("D14")
LastFormula = LastSelection.Formula
End Sub
Do kódového okna List1(Leden):
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If LastSelection.Formula <> LastFormula Then
LastSelection.Formula = LastFormula
End If
Set LastSelection = Selection
LastFormula = LastSelection.Formula
End Sub
Budeš si to musieť spojiť s Tvojou procedúrou, ktorú máš napísanú pre udalosť Worksheet_SelectionChange, ale to by nemal byť problém, stačí asi tie dve časti hodiť za seba do jednej Sub.
Zamkneš list, povolíš zmeny v zelenej oblasti. Pokiaľ sa užívateľ pokúsi zmeniť bunku v zelenej oblasti, po odskoku (napr. entrom), sa do buniek zapíšu pôvodné vzorce.
Nie je to nič moc, ale ako inšpirácia možno pomôže..citovat