Tu máte príklad, ako by to šlo riešiť. Najväčšia komplikácia je, odkiaľ zobrať a ako poslať makru zoznam stĺpcov na mazanie a zoznam stĺpcov na prevod vzorcov na hodnoty. Určite sa to nebude riešiť kopírovaním rovnakého makra iba so zmenenými stĺpcami pre každé tlačítko zvlášť.
Takže je tu parametrizovaná procedúra
ExportList(), kde parameter:
Tlacitko - je "Application.Caller", teda identifikátor tlačítka, ktoré bolo stlačené. Na ktorom riadku sa tlačítko nachádza nieje problém potom zistiť, podľa bunky v ktorej je (TopLeftCell). A aj keď si potom prečítame z A:A podľa toho názov listu, ktorý treba spracovať, je nám to prd platné, keď chcete mať rôzne nastavenia pre rôzne listy.
Vzorce - zadávate v ňom názvy stĺpcov oddelené čiarkami, ktoré chcete previesť na hodnoty, teda napr. "E,G"
Mazat - to isté čo
Vzorce, len ide o mazanie hodnôt.
Toto riešenie síce zníži rozsah makier, ale stále vyžaduje zásah do makier, a pridanie nového volajúceho makra a priradenie tohto makra novému tlačítku pri pridaní nového listu do zoznamu.
Lepšie by bolo to riešiť tak, aby ste nemusel do makra vôbec ísť. Ponúka sa pridať do zoznamu vedľa 2 stĺpce, kde bude v bunkách k daným listom uvedené ktoré stĺpce sa majú prevádzať, a v ďalšom stĺpci bude uvedené, ktoré stĺpce sa majú mazať. Makro by si tieto infošky prečítalo samé, a nič by ste nemusel pri pridaní listu v makrách meniť. Len skopírovať tlačítko na nový vyplnený riadok.
Ďalšou možnosťou ako použiť parametrizovanú uni-procedúru by bolo, keby ste mal 1 výberový zoznam a 1 tlačítko. To by volalo procedúru vždy so správnymi parametrami, uvedenými v nastavovacej tabuľke.
Dúfam, že ma chápete. Povedzte, ako to chcete, nech to neprerábam X krát.
Pridal som pre ukážku ako by to mohlo vyzerať listy Seznam2 a 3. Sú nefunkčné, to len pre pochopenie.
Příloha: 44100_copy-aaa.zip (36kB, staženo 24x) citovat