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.Validation.Formula1) 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_Through_data_Validation()
Dim xRg As Range
Dim xCell As Range
Dim xRgVList As Range
Set xRg = Worksheets(„Nový_2018_VB“).Range(„D4“)
Set xRgVList = Evaluate(xRg.Validation.Formula1)
For Each xCell In xRgVList
xRg = xCell.Value
ActiveSheet.PrintOut
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://leteckaposta.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 1997 dny |
Sledovat
Nahlásit
|
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.Validation.Formula1)
nahradit tímto:
Set xRgVList = Evaluate(„=INDIRECT($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 |
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 |
U otázky nebylo diskutováno.
Nový příspěvekBedy | 1528 | |
Michal Kole | 1199 | |
led | 1156 | |
Hlada | 1131 | |
mosoj | 1124 | |
gecco | 904 | |
www | 828 | |
badisko | 817 | |
cochee | 814 | |
Dochy | 725 |
Software |
Hardware |
Internet |
Programování a webdesign |
Sítě |
Bezpečnost |
Ostatní počítače a internet |