< návrat zpět

MS Excel


Téma: Nefunkční příkaz ve VBA v Exelu 2007 vs 2013 rss

Zaslal/a 6.10.2017 13:32

Ahoj, mohu poprosit o radu.
Mám tabulku kam importuji data, která se mi různě rozhazují na potřebné listy a tisknou přehledy. A jeden z přehledu na list NSTD používám filtrování ve sloupci J. Používám na to:
ActiveSheet.Range("$A$1:$I$501").AutoFilter Field:=10, Criteria1:="PRAVDA"
Office 2013 mi toto funguje, ale problém je že v Office 2007 ne, teda tak na půl, vypadá to že to správně zafiltruje sloupec J na rádky co obsahují Pravda, ale ve výsledku ani jeden řádek jako by toto neobsahoval. Když pak ale dám ručně filtrovat tak to se ukážou.
Má někdo radu jak toto nahradit ?

Příloha: zip37832_test.zip (123kB, staženo 31x)
Zaslat odpověď >

#037833
avatar
Hmm.. A skúsil si
Criteria1:="TRUE"
alebo

Criteria1:=Truecitovat
#037835
avatar
no lol to mě nenapadlo, díky.
Criteria1:=True funguje ja to zkoušel protože jsou všude CZ tak jen s funkcí PRAVDA 9citovat
#037837
avatar

Nomi napsal/a:

no lol to mě nenapadlo, díky.
Criteria1:=True funguje ja to zkoušel protože jsou všude CZ tak jen s funkcí PRAVDA

VBA česky nerozumí.citovat
#037874
avatar
Tak nakonec nepomohlo.
ActiveSheet.Range("$A$1:$I$501").AutoFilter Field:=10, Criteria1:="Pravda" změneno na
ActiveSheet.Range("$A$1:$I$501").AutoFilter Field:=10, Criteria1:=True

a to začalo fungovat v Exelu 2007, ale ve 2013 zase nefiltruje :(citovat
#037875
avatar
Mám taký pocit, že Filter treba najprv vypnúť a potom zasa zapnúť, asi nejak takto

If Worksheets(1).AutoFilterMode Then
Worksheets(1).AutoFilterMode = False

a až teraz zasa zapnúť.
Ale sa možno mýlim, lebo to bolo v E2003 ?citovat
#037891
avatar
a) Přesvědčte se, že obsahem buněk jsou skutečně pravdivostní hodnoty (viz i formát buňky), nejen text PRAVDA/NEPRAVDA.
b) Podle mě by se mělo výhradně používat Criteria1:=True, nicméně některé diskuse radí zkusit Criteria1:=CBool(1).

Pokud je to bug (Excel 2007 je expert na prasárny) a nedobereme se řešení, pak přinejhorším podmíněný kód a zjišťování verze Excelu.citovat
#037913
avatar
Děkuji za rady,
@xlnc
a) mělo by být v pořádku, provádí se v celém sloupci funkce na porovnávání výskytu slov a výsledek je jen Pravda/Nepravda (obsahuje - neobsahuje slovo)- já pak právě chci jen řádky s pravdou.
b)CBool(1) mi funguje stejně jako True, to znamená Exel07 ok Exel13 ne.

S tou kontrolou verzi je dobrý nápad, pohraji si touto myšlenkou a nastavím, aby při exelu 2013 filtrovalo podle slova Pravda a u 2007 aby filtrovalo podle True, ještě zkusím u Exelu 2016 jak se to chová :)citovat
#037914
elninoslov
A skúšal ste ten filter aj vypnúť, ako radí Havran ?
Alebo napr aj takto:
Sub NSTDaProdej()
With Sheets("Nstd")
If .FilterMode Then .ShowAllData
.Range("$A$1:$I$501").AutoFilter Field:=10, Criteria1:=CBool(1)
End With
End Sub


Inak v E2016 Pro x64 SK funguje aj True aj "True" aj CBool(1).citovat
#037927
avatar
Již vyřešeno.
S pomocí poznání verze exelu a pak podle toho se spustí makro s filtrováním.

S vypínáním filtrování sem to jen cvičně teď pro jistotu zkusil, ale nepomůže a ono stejně před zahájením importu dat a spuštěním makra je list prázdný a data se tam teprve přenášejí z jiného listu. A teprve potom se data filtrují. A tabulka je jako šablona a každý den se otvírá nová - prázdná, tak že ani z předešla tam nemůže být nic zafiltrováno.citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje