Citat:
pcpopovic: - Zašto svaki radni list (čak i Radna knjiga) ima "Option Explicit" u VBA kodu?
Zato što je kod mene po defaultu kada otvorim Excel VBA postavljeno da mi na početku VBA koda automatski postavi ovu definiciju.
VBE => Tools => Options => Uključena opcija "Require Variable Declarations"
Laički rečeno ovaj dio VBA koda početku provjerava postavljene varijable u VBA kodu ispod. npr. ako neki VBA kod funkcionira a da mu nije postavljena definicija neke varijable ne mora značiti da VBA kod nije ispravan a funkcionira. No ako postaviš ovu naredbu na početku iste procedure tada može prijaviti grešku. Dakle, to je neka vrsta provjere. Ovo ti bolje mogu objasniti iskusni VBA Excel programeri. (ja nisam baš vičan VBA programiranju)
Citat:
pcpopovic:- Pojašnjenje šta kod (Code), koji ste primenili u primeru, radi? Jasno mi je da se odnosi na kolonu 7 na Listu "Promet" i da koristi podatke iz "Tablice2" - i ništa više?
Hmm, što da ti kažem? Opet moje laičko objašnjenje, pogledaj komentare.
Citat:
Private Sub Worksheet_Change(ByVal Target As Range) 'vrsta procedure
If Target.Column = 7 Then 'ako se dogodi promjena u stupcu sedam po redu (G stupac) učini slijedeće
'pregledaj stupac G
'kreni od zadnjeg reda prema gore i utvrdi koji red je zadnji koji sadrži podatke u stupcu G ['End(xlUp).Row']
'za svaki red u stupcu G koji sadrži podatke u stupcu F postavi slijedeću formulu =IF(ISNUMBER(RC[-2]),VLOOKUP(RC[-2],Tablica2,3,FALSE),"""")
'ova formula koristi brojeve umjesto slova stupaca, dakle R1C1 je isto što i A1
'ako napišemo RC[-2] to znači da je isto što i npr.ako se formula nalazi u stupcu D tada je ovaj dio D2-2=B2
'4 navodnika znače isto što i 2 navodnika u FormulaLocal tj. klasičnoj formuli na Excel Sheet, dakle u ovom slučaju obavezna su dva navodnika+ ako koristiš npr. argument prazno ili ("")
'da ponovim, ako je u formuli neki argument prazno "" u formuli u VBA kodu pišeš """"
Range("F4:F" & Cells(Rows.Count, "G").End(xlUp).Row).FormulaR1C1 = _
"=IF(ISNUMBER(RC[-2]),VLOOKUP(RC[-2],Tablica2,3,FALSE),"""")"
End If 'kraj navedenog dijela procedure iznad ili zatvoreni tag (IF/End IF)
End Sub 'kraj procedure
Možda ovo moje nije dobro objašnjenje, ali se ja nadam da će ti iskusni VBA programeri (kojih ima na ES-u to dodatno pojasniti)
Jedna stvar me zanima, zašto inzistiraš na konvertiranju formule u vrijednost?
Ako koristiš Unique podatke kao uvjet tada nema problema da se zabuniš o cijeni bez obzira u kojem ona mjesecu ili periodu bila.
Ova procedura će pri svakom novom upisu u stupcu G postaviti formulu u F stupcu za sve unesene redove u stupcu G. Jedino nije dobro ako preskočiš neke redove jer će procedura i u tom slučakju postaviit formulu.
No dobro, svatko im a svoje potrebe i svoj zahtjev, ja ti u ovom slučaju nažalost ne mogu više pomoći.
Možda neki iskusni Excel user VBA na forumu može?
pozz