Avatar uživatele
rysekl

Excel VBA makro – tisk všech možností podmíněného seznamu, jak upravit vzorec/makro?

Dobrý den,

potřeboval bych poradit, jak upravit makro tak, aby fungovalo s podmíněným seznamem v Excelu. Chyba se objevuje v řádku Set xRgVList = Evaluate(xRg.Va­lidation.Formu­la1) z důvodu, že seznam vytvářím s pomocí vzorce NEPŘÍMÝ.ODKAZ. Pokud vzorec vyměním seznamem z přesně určené tabulky, vše funguje jak má. Využití nepřímého odkazu je však nutné, jelikož se jedná o podmíněný seznam. Přikládám kód z VBA.

Sub Iterate_Throu­gh_data_Valida­tion()
Dim xRg As Range
Dim xCell As Range
Dim xRgVList As Range
Set xRg = Worksheets(„No­vý_2018_VB“).Ran­ge(„D4“)
Set xRgVList = Evaluate(xRg.Va­lidation.Formu­la1)
For Each xCell In xRgVList
xRg = xCell.Value
ActiveSheet.Prin­tOut
Next
End Sub

DOPLNĚNÍ:

aby to bylo jednodušší, zde odkaz na jednoduchý dokument, který vysvětluje, co vlastně chci. Je v něm i makro, které jsem použil a princip, ze kterého vycházím: http://letecka­posta.cz/424369011
Bohužel z důvodu GDPR nemohu použít přímo dokument, který potřebuji upravit, ale tento je úplně stejný, jen s jinými daty.

Zajímavá 1Pro koho je otázka zajímavá? Alesh před 1793 dny Sledovat Nahlásit



Nejlepší odpověď
Avatar uživatele
Alesh

nahoď sem ty vzorce, fungující i ten nefungující vzorec

Jak to tak zkoumám, tak problém je asi jen v té češtině ve vzorci, prostě chroustá to jen anglické vzorce. Pokud se tedy chceš držet tohoto již navrženého postupu, tak je nutné to řešit např. takto:

toto:
Set xRgVList = Evaluate(xRg.Va­lidation.Formu­la1)

nahradit tímto:
Set xRgVList = Evaluate(„=IN­DIRECT($A$2)“)

On je totiž problém, že zatímco u buněk si lze nechat vypsat jak originální, tak lokální vzorec, tak u toho ověření lze vypsat jen lokální a naopak ta funkce Evaluate zas umí vyhodnotit jen originální (anglický) vzorec. Pro přeložení by šlo třeba použít nějakou buňku, ale to je takové ještě divnější řešení, než to vložení vzorce natvrdo do makra.
Pak je variantou to úplně přepsat, ale to bych musel vědět, jak si to přesně představuješ, abych ti mohl pomoct. Já osobně bych ty seznamy přes formuláře, to by bylo takové víc profi, třeba už v tom, že změnou země hned načteš platná města (a nebude ti tam viset to město ze státu, který byl vybrán před změnou země).

Upravil/a: Alesh

0 Nominace Nahlásit

Další odpovědi
Avatar uživatele
Dochy

Popravdě už dlouho jsem s VBA makry nedělal, tak nevylučuji, že budu úplně mimo.

Domnívám se, že Excel není schopen/brání se zjistit že je nutné provést makro protože došlo někde v tabulce ke změně. Zkrátka některé konstrukce vůbec nedovolí, protože by (čistě teoreticky) mohlo dojít k nesprávnému vyhodnocení nebo zacyklení výpočtu. Pak bys musel sám provést to vyhodnocení odkazu v makru a nenechávat to na excelu.

Ber to prosím jen jako myšlenku vhodnou k prověření, možná jsem opravdu mimo…

0 Nominace Nahlásit


Diskuze k otázce

U otázky nebylo diskutováno.

Nový příspěvek