
Ahoj zkusil to třeba takhle:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Locked = False And Target <> "" Then
ActiveSheet.Unprotect
Target.Locked = True
ActiveSheet.Protect
End If
End Sub
Za Unprotect a Protect lze dle potřeby přidat do uvozovek heslo.
M@

Ahoj,
Děkuju za pomoc. Funguje to Výborně!
Monca(25.12.2009 21:43)citovat#000958 
Ahoj, mam dotazek... Pri spusteni listu mam zamkle skoro vsechny bunky a potrebuji je postupne odemykat podle zadaneho textu do jine bunky. Problem je ten, ze do kodu nemohu dat target, protoze nepotrebuji pracovat s aktualni bunkou. Takze mam v kodu:
cells(radek, 4).locked = false
Vyskytne se chyba: Není možné nastavit vlastnost locked třídy range.
Nějaké nápady?
Dekuji za radu. BTW: Excel 2007 :-/
Poki(30.12.2009 22:39)citovat#000963
Nejak si nedovedu predstavit, co presne potrebujes - bylo by asi dobry prilozit nejakej priklad...

Ahoj,
zkusil jsem postavit příklad za předpokladu, že buňka A1 bude říkat který řádek ve sloupci A se má odemknout:
Private Sub Worksheet_Change(ByVal Target As Range)
If IsNumeric(Cells(1, 1)) Then 'ověří zda-li je v buňce A1 číselná hodnota
If Cells(1, 1) > 0 And Cells(1, 1) <= 65536 Then 'ověří zda-li ta číselná hodnota je větší než 0 a pro excel 2003 menší nebo rovno 65536, pro excel 2007 to bude nějakých cca 1,2M
Dim radek As Single 'definice proměnné
ActiveSheet.Unprotect 'odemčení listu
radek = Cells(1, 1) 'nastavení hodnoty z buňky A1 do proměnné
Cells(radek, 1).Locked = False 'odemčení buňky na řádku radek ve sloupci 1 (A)
ActiveSheet.Protect 'zamčení listu
End If
End If
End Sub
Snad by mělo chodit i pod 2007 :-), což si ale sám nezkusím :-).
Přeji krásného Silvestra.
M@