[ tolstoy @ 15.06.2005. 16:58 ] @
Postoji li mogucnost da se u odredjenim celijama f-ja NOW sama aktivira pri promeni sadrzaja neke druge celije? U pitanju je tablica u koju blagajnica u toku svoje smene unosi svaki ulaz i svaki izlaz novca. Znaci, ako je u celiji D5 unet podatak, kako da namestim da se recimo u celiji D4 pojavi vreme kada je izvrsena promena u D5?
[ Marko_L @ 15.06.2005. 21:28 ] @
Otvori Visual Basic Editor (Tools > Macro > Visual Basic Editor ili ALT + F11), a onda u Sheet-u u kome radiš ukucaj ovo
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 5 Then Cells(4, Target.Column) = Now
End Sub

Time dobijaš da ukoliko se u bilo koju kolonu u redu 5 upišeš nešto, u istoj koloni samo u redu 4 će se upisati rezultat dobijen Now funkcijom.Jel to to ili...?
[ tolstoy @ 15.06.2005. 21:47 ] @
Hmm, probao sam, izbacuje mi

"Compile Error:

Invalid outside procedure"

U svakom slucaju hvala za pokusaj.
[ Marko_L @ 15.06.2005. 21:53 ] @
Jesi li sigurno otvorio Sheet (dvostruki klik na Sheet1 u Project exploreru) i u njemu ukucao kod u editoru ?
[ Marko_L @ 15.06.2005. 22:00 ] @
U stvari, evo ti primer, snaći ćeš se.
[ tolstoy @ 15.06.2005. 22:27 ] @
Uuupsss! Sad sam ukapirao gde sam pogresio! Radi!!! Hvala puno, ja cu sada da navalim sa "konstrukcijom" cele tabele, pa ako negde zapne, moram se opet javiti za pomoc. Ogromno HVALA!
[ todra @ 16.06.2005. 01:08 ] @
Zdravo tolstoy,

Formula bi izgledala, npr. ovako: u D4 unesi "=IF(D5="";"";NOW())"
naravno bez navodnika. Celiju u koju je formula uneta formatiraj da
izgleda npr. ovako "15.06.2005 20:45" (dd.mm.yyyy hh:mm)

Problem je sto ce se formula u kojoj je funkcija NOW() automatski
preracunavati uvek kada uneses podatak u bilo koju celiju ili kada
otvoris workbook, pa ce uvek biti prikazano trenutno, a ne vreme kada je
unos izvrsen (sto je verovatno bio cilj).

Sve najbolje.
Ratko.
[ tolstoy @ 16.06.2005. 12:20 ] @
@ Todra:

Prvo sto sam i sam probao, bilo je da uz pomoc IF f-je napravim sto mi treba, ali nije islo. I, kao sto si rekao, vrednosti za vreme se posle svake promene, menjaju u SVIM celijama, a to naravno nema smisla. Ono sto je Marko_L predlozio radi odlicno. Ja upravo sada trazim nacin da to prosirim na ceo radni list, tj. na ostale redove u okviru radnog lista; malo me zeza to sto broj takvih redova nije definisan, tj. ogranicen, ne zna se koliko ce u toku radnog dana biti izmena. Ja nemam bas nikakve veze sa programiranjem, ali, secam se nekih principa iz Fortrana, jos sa faxa od pre 15-tak godina, tada sam se sluzio "DO" petljama. Otprilike mi sada treba nesto slicno. Ne znam da li sam bas bio jasan....?
[ todra @ 18.06.2005. 16:35 ] @
Nemam resenje, ali mozda pomogne upisivanje u kolone,
npr. blagajnica iznos upisuje u kolonu C a datum i vreme se upisuju u
kolonu B. Tako na raspolaganju imas i do 65536 celija za upis.

U tom slucaju bi kod koji je Marko_L predlozio trebalo modifikovati u:

"Private Sub Worksheet_Change(ByVal Target As Range)"
"If Target.Column = 3 Then Cells(Target.Row, 2) = Now"
"End Sub"


Sve najbolje.
Ratko.
[ saka @ 15.03.2011. 22:05 ] @
Da li neko moze da izmeni ovaj kod pa da ide po vertikali tj kada u celiji A1 upisem broj u celiji B1 da se pojavi vreme.
Evo koda od gore:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 5 Then Cells(4, Target.Column) = Now
End Sub
U primeru kada se u petom redu upise broj iznad njega se pojavi vreme a meni treba da idem ka dole.
Hvala
[ saka @ 15.03.2011. 23:18 ] @
Nasao sam na netu to sto mi treba evo kako izgleda:
Code:

Private Sub Worksheet_Change(ByVal Target As Range)
'Col B time will change if data in Col A is edited
On Error GoTo ws_exit:

    Application.EnableEvents = False
    If Not Intersect(Target, Me.Range("A1:A10")) Is Nothing Then
        With Target
            If .Value <> "" Then
                .Offset(0, 1).Value = Format(Now, "hh:mm:ss")
            End If
        End With
    End If
ws_exit:
    Application.EnableEvents = True
End Sub

Kod mene radi ok
pozz

[Edit: TAGOVI]

[Ovu poruku je menjao 3okc dana 01.08.2012. u 19:17 GMT+1]