Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

macro za zaključavanje čelije kada se unese podatak

  • 2 odgovora
  • 3.104 pregleda

Najnovija ↓

macro za zaključavanje čelije kada se unese podatak 01.03.2015. u 11:32 · pre 142 meseca #1
poz
imam jedno pitanje,kako da zaključam čeliju kada se u čeliju unese podatak u rasponu primer radi CC3:AG3,sljedeći raspon C4:AG4 i tako sve do C7:AG7
da kad unesem podatak u čeliju C3 da je zaključa a da mogu unijeti podatak u sljedeću čeliju D3 i da i nju zaključa poslije unosa podatka i tako redom
imam kod ali čim unesem podatak u prvu čeliju odmah zakljuće i sve ostale
naravno da traži pasword za otključavanje
hvala

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("C3:AG3")) Is Nothing Then 'set your range here
ActiveSheet.Unprotect Password:="mypassword"
Target.Locked = True
ActiveSheet.Protect Password:="mypassword"
End If
End Sub
Potpis
Jasmin
Re: macro za zaključavanje čelije kada se unese podatak 02.03.2015. u 10:56 · pre 142 meseca #2
Izmenio sam makro na događaj worksheet change tako da ispituje da li je ćelija u istom redu, postmatranom opsegu popunjena i ako jeste onda je zaključava
Znači za ovo rešenje nije bitno da li se popunjava redom ili ne. Naravno može da se napravi i drugačije u zavisnosti od toga šta ti treba. Opseg koji posmatraš treba da uključi sve redove koji se unose - dakle C3:AG7 . U mom primeru ja sam radi testiranja postavio samo pet kolona od C, a ti prilagodi kako treba.

Posebno je važno kako je postavljen atribut locked za ćeljie. Default u Excelu je da je on True, ali za tvoj primer treba da je False u posmatranom opsegu.

Code:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim cl As Range
Dim currRng As Range
If Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("C3:G17")) Is Nothing Then 'set your range here
    Set currRng = Target.Resize(ColumnSize:=5)
    ActiveSheet.Unprotect Password:="mypassword"
    For Each cl In currRng
      If Len(cl.Text) > 0 Then
        cl.Locked = True  ' zakljucaj ćeliju ako je nešto upisano
      End If
    Next cl
    ActiveSheet.Protect Password:="mypassword"
End If
End Sub


Nisam shavatio smisao svega ovoga i verujem da će napraviti više štete nego koristi. Ja bih koristio ugrađeni alat Validate sa nekom korisničom funkcijom koja bi ispitavala da li su sve ćelije iz posmatranog opsega u istom redu popunjene i onda bi dao upozorenje za izmenu - ali bi se izmena dozvolila. Ako baš hoćeš da kontrolišeš izemne onda je možda bolje da je unos moguć samo preko forme.
Potpis
Nije to loše Rembrante, samo što ne bi dodao još malo boje?
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme