[ arthichoka @ 08.05.2012. 15:37 ] @
Kako da zaštitim tablicu da se više ne mogu mijenjati podaci u popunjenim čelijama nakon pritiska na save? A da se prazne čelije mogu normalno popunjavati ?
[ timmy @ 08.05.2012. 16:43 ] @
1. Ukoliko zelis da zastitis podatke koji su od ranije poznati, a da dozvolis da se unose samo novi podaci - tada
1.1 Selektuj prazne celije tj. one u koje treba unositi vredsnosti
1.2 Format Cells/ Iskljuci Locked
1.3 Aktiviraj zastitu radnog lista Review/Protect Sheet

2. Ukoliko zelis da se dinamicki zakljucavaju celije tako da ne moze da se menja ono sto je unoseno u celijama
2.1 Selektuj sve prazne celije
2.2 Format Cells/ Iskljuci Locked
2.3 Ubaci sledece procedure

Code:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
        ActiveSheet.Protect
End Sub


i za onaj list na kome se nalaze podaci

Code:

Private Sub Worksheet_Change(ByVal Target As Range)
    ActiveSheet.Unprotect
    Target.Locked = Target.Value <> ""
    ActiveSheet.Protect
End Sub



Naravno ova druga ideja nema bas puno smisla jer neces moci da ispravis ni onu vrednost koju si upravo uneo.

Pozdrav

[ 3okc @ 08.05.2012. 17:33 ] @
@timmy, ima smisla ako se držimo isključivo 'snimanja' kao okidača. Tako bi se dozvolio i određeni stepen kontrole.
Moj predlog je sličan:
Code:

Private Sub Workbook_Open()

    With Sheets(1)
        .Unprotect
        .cells.Locked = False
        .SpecialCells(xlCellTypeConstants, 23).Locked = true
        .Protect
    End with
End Sub


Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    With Sheets(1)
        .Unprotect
        .SpecialCells(xlCellTypeConstants, 23).Locked = true
        .Protect
    End with
End Sub


S tim da možda ne bi bilo loše definisati i kombinaciju tastera za uklj/isklj režima zaštite, kad zatreba za nešto, da ne kopaš po opcijama.
[ ib.kroki @ 17.05.2012. 15:05 ] @
Ovo je jako zanimljiv kod, mogao bih ga iskoristiti u nekim situacijama ali pod uslovom da se može ispraviti eventualna greška (ko radi taj i greši).
Da li je moguće prilagoditi ovaj VBA kod?