[ neptuncokg @ 24.05.2010. 02:13 ] @
| U jednom sheetu u koloni "A" su datumi po rastucem redu. Kada rucno odradim filtriranje od jednog do drugog datuma, sve je o.k. Kada to filtriranje snimim u makro - ne funkcionise. Znaci, identican postupak pri rucnom filtriranju radi, a putem makroa ne. Evo procedure:
Sheets("KPR").Range("A10:A9999").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:=">=E6", Operator:=xlAnd, Criteria2:="<=G6"
Polja "E6" i "G" su - pocetni i krajnji datum. Isto se dobije i kada u makrou umesto "E6" i "G6" upisem konkretne datume. Zaista ne razumem u cemu je problem.
Hvala unapred na svakoj pomoci. U prilogu je primer. |
[ FOX028 @ 24.05.2010. 08:55 ] @
ni meni nije htelo da radi kako treba ovo kako si ti zamislio, ali sam to resio tako sto sam sam napisao VBA kod za filtriranje i dobijas isti rezultat ali bez AutoFilter-a
[ neptuncokg @ 24.05.2010. 10:05 ] @
Tvoj makro besprekorno. Svaka čast! Puno hvala.
Ipak mi ostaje nejasno zašto neće da makro radi preko AutoFiltera. Da li nešto grešim, ili VBA ne poznaje sortiranje po datumu? Pozdrav.
[ Jpeca @ 24.05.2010. 11:54 ] @
U tvom kodu ima više problema, početni je da datum mora da bude u formatu mm/dd/yyyy. Pogledaj ovde http://www.elitesecurity.org/t240586-0#1449401
[ neptuncokg @ 24.05.2010. 13:17 ] @
FOX-ov makro odlicno odradjuje posao, ali bih voleo da ovaj problem isteram do kraja. Preformatirao sam datume na mm/dd/yyyy, ali i dalje ne radi AutoFilter kroz makro.
Sta su jos nedostaci, s obzirom da je makro snimljen, ja zaista ne znam. Pozdrav i hvala.
[ Jpeca @ 24.05.2010. 20:01 ] @
Drugi problem su kriterijum u obliku ">=E6". Ovako napisano ne upoređuje sa sadržajem ćelije E6 nego sa nizom karaktera "E6"!
Takođe, mislim da opseg za filtriranje treba da počne od A9 jer ćeš ovako ćeliju A10 ostaviti van filtera.
Dakle nakon što si promenio formata ispisa datuma u obliku mm/dd/yyyy (mada je to moglo i u kodu) tvoj makro bi mogao da izgleda ovako
Code: Sub Filter()
Application.ScreenUpdating = False
' Sheets("KPR").Range("A9:A9999").Select
' Selection.AutoFilter
Range("A9:A9999").AutoFilter Field:=1, Criteria1:=">=" & Range("E6").Text, Operator:=xlAnd, Criteria2:="<=" & Range("G6").Text
' Range("A5").Select
End Sub
Primeti da ti selekcija nije neophodana. Kad snimiš makro ona se neminovno pojavljuje u snimljenom obliku, ali je lako možeš eliminisati.
[ neptuncokg @ 24.05.2010. 21:30 ] @
Zaista sam neizmerno zahvalan na ovakvom pojasnjenju. Nije u pitanju samo pomoc u konkretnom slucaju, vec, kao i obicno, "mala lekcija programiranja". Pozdrav i hvala.
[ neptuncokg @ 25.05.2010. 02:15 ] @
Resenjem ovog problema, pojavio mi se novi, kao "dopuna" prethodnog. Moze li se ovako filtriran sheet upotrebiti kao RowSource ListBox-a ?
Naime, pre filtriranja za popunu ListBoxa koristio sam sledeci makro:
Dim xy As Integer
xy = Sheets("KPR").Range("A9").End(xlDown).Row
lst1.RowSource = "KPR!A10:L" & xy
Odnosno, svi puni redovi od "A9", pa nanize cinili su RowSource. Sada, kad isfiltriram redove po datumu ovaj makro nema funkciju. Pokusao sam da dopunim i FOX-ov i JPecin primer, ali - ne ide. Hvala unapred i pozdrav.
[ FOX028 @ 25.05.2010. 08:40 ] @
evo doradio sam malo moj predhodni primer, dodao sam ti listu
nadam se da si to trazio
pozzzz
[ neptuncokg @ 25.05.2010. 11:02 ] @
Da, tako nesto. S tim sto se meni ListBox nalazi na formi. Filtriranje i prikaz filtriranog opsega odradjujem clickom na button. Originalni sheet ima 12 a ne 8 kolona, kao u primeru (skratio sam zbog prakticnosti). I sad kad umetnem tvoj makro u moj "cmd_click" on nece da odradi. Evo sada prilazem "originalni" dokumenat, sa tvojim makroom.
Hvala zaista na pomoci i trudu. Pozdrav
[ FOX028 @ 25.05.2010. 12:35 ] @
resen problem, ostaje ti jos samo da se poigras sa sirinama kolona u ListBox-u
pozzz
[ neptuncokg @ 25.05.2010. 13:46 ] @
Zaista imresivno. Puno vremena sam izgubio da ovo uradim, ali tek sada vidim da nisam bio ni blizu resenja. Hvala od srca. Nadajuci se da nisam prenaporan, molio bih samo za neka pojasnjenja:
1. Sada su prva tri datuma u starom formatu "dd.mm.yy", a svi ostali u "mm/dd/yyyy" Koloko vidim, u kodu to nista nisi menjao. U sheetu su svi po starom.
2. U "dinarskim" kolonama u Lst1 svi iznosi su sada bez decimala, a bili su "0,00" Ni to nisi menjao.
3. U sumarnim txt-ovima na dnu liste prikazuje ukupne iznose, "nefiltrirane", a u sheetu imam zbirove sa SUBTOTAL funkcijom, tj. zbirovi treba isprate filtriranje.
Hvala na trudu, nadam se da cu biti u prilici da uzvratim. Pozdrav!
[ FOX028 @ 25.05.2010. 15:55 ] @
odgovor:
1. i 2. trebalo je da se doda format, mislim da je sada to OK
3. vrednosti za txt-ove si vukao iz Sheet-a a tamo nije vrseno sortiranje vec u samom lst1, reseno je i to
pozzz
[ neptuncokg @ 25.05.2010. 19:01 ] @
Sve sto bih rekao ili pitao posle ovoga bilo bi suvisno. Jedno veliko HVALA. Ovakvu podrsku zaista nisam dugo doziveo. Sve radi besprekorno. Pozdrav !!!
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|