< návrat zpět

MS Excel


Téma: Makro-vytvoř. nového listu s odstraněním vzorců rss

Zaslal/a 30.8.2019 8:42

Zdravím,
bohužel na to nemůžu přijít a tak bych Vás rád poprosil o radu.
Potřeboval bych makro na zkopírování listu AAA, který by se otevřel v novém okně a zároveň se ve sloupcích F a H vymazali veškeré vzorce. List bych rád v novém okně, abych jej rovnou mohl uložit pod jiným názvem.

Předem děkuji za pomoc a přeji hezký den.
Tom

Zaslat odpověď >

Strana:  1 2   další »
#044093
avatar
Takže chcete vytvořit nový sešit a zkopírovat do něj obsah listu AAA?
Ve slupcích F a H mají zůstat hodnoty místo vzorců?citovat
#044094
avatar
Ano je to přesně jak píšete 1
Ještě bych poprosil o doplnění do makra, aby se vymazali sloupce N a O, pak už to bude snad dokonalé.
Neumím absolutně pracovat v makrech, ale předpokládám, že pak pochopím jak změnit názvy listů a sloupců.

Předem moc děkuji.citovat
#044096
elninoslov
Ukážka aj s príkladom, čo sa udeje, ak to nedomyslíte v stĺpci P.
Příloha: zip44096_copy-aaa.zip (19kB, staženo 32x)
citovat
#044097
avatar
Super díky moc.
Jen bych měl ještě dva dotazy.
A) Jak se v makru odkážu na jiný list? Chtěl bych toto provádět ze seznamu a rovnou aby se exportovali jiné listy.
B)Jak mám zadat With .Range("F:G").Resize(R) - Aby to vymazalo vzorce pouze ve sloupci E a F? Zkoušel jsem různé možnosti, ale nepodařilo se mi 8citovat
#044098
elninoslov
Šmarjá, treba si ujasniť pojmy.
1. Na iný list sa odkážete
Worksheets("Meno listu").Range("A1").Value = "Hello World!"
2. Koľko listov sa má naraz kopírovať do iného súboru ?
3. Ovládanie bude teda z nejakého riadiaceho listu ?
4. Raz vravíte o stĺpcoch F a H (tam som sa ja pomýlil a dal F a G), potom vravíte o E a F. Tak ešte raz, ktoré stĺpce ?
5. Zmazať vzorce ??? Čo tým myslíte ? Snáď myslíte prekonvertovať vzorec na jeho výsledok, tak ako je to teraz.
6. Čo znamená zmazať stĺpce N a O? Vymazať ich obsah (ako s Delete), alebo ich odstrániť úplne, teda zvyšok tabuľky sa posunie doľava ?
7. Stĺpce majú hlavičky, alebo akékoľvek iné odsadenie od vrchu listu ? Ak áno, koľko riadkov ?
8. Ktorý stĺpec sa dá použiť na určenie výšky dát ? Alebo je to variabilné ?
9. Ak sa to má hneď uložiť, odkiaľ sa má brať názov súboru a cesta ? Má sa Vás to opýtať na cestu a názov ?
10. Ak pôjdu tie listy samostatne ukladať, tak sa má pýtať na meno a umiestnenie pre každý list zvlášť ?
11. Nereagoval ste na ten príklad so stĺpcom P. Teda ak zmažete/odstránite stĺpce N a O, nie sú na ne náhodou naviazané nejaké vzorce ?
...
Treba aj nad zadaním stráviť nejaký čas...
a priložiť príklad.citovat
#044099
avatar
Omlouvám se, za moji špatnou specifikaci. Přílohou zasílám list se zadáním a níže odpovědi na Vaše otázky.

List seznam- Zde by mělo být X listů a tlačítka na základě kterých bych listy exportoval.
Ostatní listy
Sloupce E a G - vložit jako hodnoty a odstranit vzorce
Sloupce L a M - vymazat jejich obsah stačí
2. Exportovat se má pouze 1 list
3. Ano tak bych si to představoval, do budoucna bych to rád rozšířoval
4. Sloupce jsou jen příklad, ty se budou měnit pravděpodobně u každého listu zvlášť (to si pak budu upravovat)
5. To jste měl správně, jen aby tam byla výsledná hodnota
6. Stačí jen obsah
7. Listy mají odsazení, ale to pro mě nehraje roli, vše se může provádět od 1 řádků
8. Nedá se určit, buňky nejsou popsané u každého řádku. Takže to bude variabilní, ale max to bude 1000 řádků (jestli je nutná hodnota)
9.10. - není třeba, stačí tak jak to bylo, jen nový soubor
11. V těchto buňkách jsou vstupní data, takže je stačí jen smazat.

Ještě jednou Vám moc děkuji.
Tom
Příloha: xlsx44099_test.xlsx (44kB, staženo 26x)
citovat
#044100
elninoslov
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: zip44100_copy-aaa.zip (36kB, staženo 24x)
citovat
#044101
avatar
Popsal a zpracoval jsem to tak krásně že tomu rozumím 1 V úterý budu v práci tak to vyzkouším aplikovat na to, na co potřebuji.
Je škoda, že to nejde jak jste psal že to nejde :) To Vaše první makro, kde bych si měnil jen název listu a sloupce jaké bych potřeboval.

K tomu prvním makru ještě prosím:
Jak mám zadat With .Range("F:G").Resize(R) - Aby to vymazalo vzorce pouze ve sloupci F a G? Zkoušel jsem to najít v tom novém makru, ale to je pro mě ještě víc nepochopitelné 8citovat
#044102
elninoslov
Tak teda ešte raz. Tu máte všetky 3 verzie funkčné. Každá verzia má svoj list aj svoj modul s makrami. Nechajte si len ktorú chcete. Máte tam popis ako sa používajú, pridávajú, upravujú.

K predošlej otázke, ktorá je ale už irelevantná:
Ak sa jedná o F:G (susedné stĺpce), tak to fungovať musí
With .Range("F:G").Resize(R)
.Value = .Value
End With

Ak sa jedná o nesúvislé stĺpce napr. E a G tak treba obdobné makro zopakovať 2x.
With .Range("E:E").Resize(R)
.Value = .Value
End With

With .Range("G:G").Resize(R)
.Value = .Value
End With


Každopádne si vyberte ale verziu, kde nemusíte makro upravovať. Dá sa tam ešte doplniť kontrola nezadania parametrov a pod.
Příloha: zip44102_copy-aaa.zip (47kB, staženo 24x)
citovat
#044120
avatar
Zdravím,
děkuji moc za super popisy, moc mě to pomohlo a už je mi to pro laika téměř jasné :) Ideální je pro mě hned tne první seznam, raději upravím více makro a ostatní to nebudou muset řešit vůbec. Měl bych ještě dva dotazy.

A) Zkopíroval jsem VBA pro svého souboru a při spuštění makra, mě to hodí chybu hned na prvním řádku. Nevím jestli nějaký název musí být stejný, ale když jsem svoje listy nakopíroval do Vašeho souboru tak to vše fungovalo. JmenoListu = wsSeznam.Cells(wsSeznam.Shapes(Tlacitko).TopLeftCell.Row, 1).Value

B) Zistenie názvu listu podľa hodnoty v stĺpci A, na riadku so stlačeným tlačítkom, lze mít tlačítko na stejném řádku, ale aby to kontrolovalo třeba podle sloupců A, C a E? Pokud by to byl velký problém a komplikace tak to prosím neřešit.
Příloha: xlsx44120_test.xlsx (44kB, staženo 17x)
citovat

Strana:  1 2   další »

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