Stránka 1 z 1

Re: Excel (vba) - změna v buňce spustí makro

Napsal: 14 lis 2019 23:47
od X
Ještě jsem svůj postup trochu vylepšil a pokud potřebujete více oblastí které skrýváte (kolaps) a odkrýváte (expand), jistě vám toto vylepšení přijde vhod:

- zbavme se nadbytečných příkazů: ActiveSheet., protože každá tečka v příkazech prodlužuje časovou náročnost vykonání + nemusíme psát příkaz Call, v tom případě se pro parametry nesmí psát závorky!

- použijme makro s parametry (tedy technicky vzato proceduru), sice jakmile v Excelu ve VBA napíšeme sub s parametry, tak se nám ztratí z přehledu maker pro vybrání (zde technicky zdatní uživatelé / programátoři - jistě zavětří, protože na českém webu jsem o tom nenašel jedinou zmínku a tak nejspíš minimálně v ČR tento trik nebude známý), ale pomocí malého hacku jsou možná i "makra" s parametry. Do tabulky si je zapíšeme ručně (či zkopírujeme a vložíme), tvar zápisu pro "makro" se 2 řetězcovými parametry:

Kód: Vybrat vše

'jmenomakra "parametr1", "parametr2"'

Pokud parametr nebude řetězec (string), bude číslo bez uvozovek!

Obrázek

Obrázek

Re: Excel (vba) - změna v buňce spustí makro

Napsal: 15 lis 2019 10:57
od X
Ještě upozorňuji na to, že tento malý hack (trik):

Kód: Vybrat vše

'jmenomakra "parametr1", "parametr2"'

... není kompatibilní s uložením Excelu ve formátu*.xlsb(binarní forma uložení Excelu s podporou maker), dělá to neplechu (chyby)!

Ovšem formát: *.xlsm (uložení Excelu s podporou maker) je zcela bez problémů a: *.xls (binární formát Excelu do roku 2003 - podporuje i makra) je také v pohodě!

Jen pokud budete konvertovat *.xls >>> *.xlsm, je potřeba smazat tato volání procedur s parametry z listů a zadat je znova, protože při této konverzi vám Excel tato volání přejmenuje (a tak přestanou fungovat), nejspíš Excel narazí při konverzi na stejné hodnoty, které neumí rozlišit a tak přejmenovává tato nedokumentovaná volání "maker" s parametry.

Jinak ale vše funguje zcela bezproblémově - stačí jen používat*.xlsmnebo případně zastaralý (kompatibilní formát do roku 2003, pokud máte potřebu)*.xls