< návrat zpět
MS Excel
Téma: Rozšířený filtr- datum
Zaslal/a mukl 13.8.2011 23:30
Dobrý den,
potřeboval bych poradit, jak naprogramovat rozšířený filtr, který by data filtroval podle datového rozmezí.
Pokud si totiž nastavím, že chci data například >5.8.2011 a <9.8.2011 a provedu nastavení ručně, tak vše funguje.
Když to pak ale zkusím pomocí makra, tak se již nic neprovede, zkoušel jsem i makro nahrát, ale stále nic.
Data ukládám pomocí formuláře:
Sub UlozitSoupis(radek As Range)
If ufSoupiska.chbDodavatele.Value = True Then
radek.Cells(4, 15).Value = "Všichni dodavatelé"
Else
radek.Cells(4, 15).Value = ufSoupiska.cbDodavatel.Value
End If
radek.Cells(4, 16).Value = ufSoupiska.cbKomodita.Text
radek.Cells(1, 17).Value = ufSoupiska.tbOd.Value
radek.Cells(1, 18).Value = ufSoupiska.tbDo.Value
radek.Cells(4, 17).Value = ">" & ufSoupiska.tbOd.Value
radek.Cells(4, 18).Value = "<" & ufSoupiska.tbDo.Value
End Sub
A kód pro makro vypadá takto:
Sub Makro7()
'
' Makro7 Makro
'
' Klávesová zkratka: Ctrl+e
'
Sheets("Vaha").Range("A4:I18").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("Soupiska!Criteria"), CopyToRange:=Range( _
"Soupiska!Extract"), Unique:=False
End Sub
Pravděpodobně bude chyba v uložení data, asi to vba nebere jako datum a tím pádem to podle toho nefiltruje.
Každopádně budu rád za každou radu
Začátečník(14.8.2011 19:56)#005788 Nechci být válečný štváč, ale:
radek.Cells(4, 18).Date = "<" & ufSoupiska.tbDo.Value
bych nahradil:
radek.Cells(4, 18).Value = "<" & ufSoupiska.tbDo.Valuecitovat
mukl(14.8.2011 19:59)#005789 Já sem vložil špatný kód.
Tu Vaši verzi tam mám (a nefunguje), verzi výše vloženou jsem pouze zkoušel, zda to něco neudělá...
První příspěvek jsem tedy upravil
citovat
Začátečník(14.8.2011 20:01)#005790 a co chybové hlášky???
nebo zaslat ukázku
citovat
mukl(14.8.2011 20:08)#005791 Žádnou chybu to nehlásí.
Filtr pouze vyhodnotí, že nic z výchozích dat nesplňuje podmínky a vrátí tedy prázdnou oblast
citovat
Začátečník(14.8.2011 20:10)#005792 a ukázku?
možná je to profesionální slepota,taky se mi to stává
citovat
mukl(14.8.2011 20:45)#005793 Přikládám tedy onen soubor.
V listu "Vaha" kliknout na Nabídka a v ní Soupiska, tím se spustí formulář pro zadání kritérií.
A následně v listu "Soupiska" potvrdit tlačítkem (to spustí filtr).
Zápis kritérií je řešen ještě trochu jinak, než jsem ukazoval, ale princip je stejný a nefunguje ani jeden způsob.
Příloha: 5793_seznam-dodavatelu.rar (610kB, staženo 31x) citovat
RomanNTA(14.8.2011 21:19)#005794 Zkus se podívat na http://www.wall.cz/index.php?m=topic&id=5736. AdvancedFilter funguje stejně. Datum musí být celé číslo. R.
citovat
mukl(14.8.2011 21:39)#005795 Dobře, v tom to asi bude.
Můžete mi tedy ještě poradit, jak to ošetřit ve formuláři? Nevím, jak nastavit, aby se mi takhle uložilo.
Děkuji
citovat
RomanNTA(15.8.2011 7:53)#005796 Když to požaduješ od usera tak používej konvenci yyyy-mm-dd a tu si ošetři a nebo cokoliv co Ti převede funkce CDate na typ datum. Až máš správný vstup od usera pokračuj dále ve zpracování, zápisu apod. Zkoušej dále co Ti provedou řádky
Debug.Print ">" & Format(CDate("2.1.2011"), "0")
Range("A1").FormulaR1C1 = "="">" & Format(CDate("2.1.2011"), "0") & """"
R.
citovat
mukl(15.8.2011 8:05)#005797 Díky moc, už to funguje....
citovat