Přesně jak píše kolega výše.
Z toho popisu co si sem dával, sem pochopil, že se sešit do kterého se výsledky kopírují nemá zavírat, ale zůstat otevřený, proto ta kontrola počtu spuštěných instancí.
Pokud by se sešít zavíral "ručně" a opětovně otevíral přes makro budou instance excelu stále viset v paměti.
Pokud se má tedy soubor, do kterého se kopíruje zavírat, nejjednodušší to bude udělat přímo v kódu a při tom i odstřelit "druhou" instanci
Tak tady to máš.
Musel sem se zbavit i ovládacích prvků na výběr jména a místa zaměstnání. Nelíbil se jim skrytý list Data na který byly navázány.
Zvolil sem cestu nejmenšího odporu a nahradil je za Ověření dat.
Jinak v kódu se používají "CodeName" listů, to jsou ty jména, která vidíš v editoru VBA mimo závorky u jednotlivých listů. Je to z toho důvodu, pokud by došlo do budoucna k přejmenování jednotlivých listů, kód bude stále funkční.
Jediné co musí být dodrženo je jméno souboru shodné z konstantou v modulu mod_Nastaveni
Pokud tedy provedeš přejmenování souboru, změň jméno i u konstanty !!!
Prozatím jen vyměněny optionbuttony z prvků formuláře za ActiveX + kód.
Když vybereš nějaký optionbutton ze skupiny, další dva se zakážou.
V Module2 je resetovací kód.
Ve skupině A je popisek součástí optionbuttonu v dalších skupinách je součástí buněk (jak si původně měl).
Dej vědět co více vyhovuje.
Dita napsal/a:
K tomu proklikání testů v jedné oblasti (A-E)- to mě vůbec nenapadlo, ale je to tak.
Dita napsal/a:
Čím je vlastně dáno, že se bude list tisknout? Tady úplně nerozumím otázce.
Dita napsal/a:
Ale nevěděl jsem, že se sestava po uzavření sešitu vymaže.
No v první řadě z původního popisu sem nabyl dojmu, že se bude tisk provádět ihned po dopsání testu. Proto sem zvolil toto řešení.
Při kliknutí na příslušný OptionButon se aktivuje list, který k němu náleží (Tvá práce), do kódu sem dodal funkci, že se zároveň do pole Sestava uloží index listu. Při výběru dalších OptionButtonů (listů) se pole Sestava plní indexy dalších listů.
Makro Tisk
vezme pole Sestava a zobrazí náhled před tiskem, po tisku nebo zrušení náhledu se pole vymaže pro další použití. Toto pole je uloženo v paměti RAM počítače, takže pokud soubor zavřeš (i po uložení souboru) dojde k jeho odstranění z paměti a po opětovném otevření souboru je prázdné, proto ta chyba.
Když se nad tím zamyslím celý ten koncept je špatně, vzhledem k bodu 3 a 4. Zaměstnanec klidně může proklikat všechny OptionButtony na listu, než si vybere konkrétní test. Jak máš tohle ošetřeno? Nebo je to možné? (došlo by k tisku všech listů!)
Čím je vlastně dáno, že se bude list tisknout?
Pokud to má být jen na základě hodnoty Optionbuttonu bylo by vhodné to celé předělat a místo ovládacích prvků formuláře použít prvky ActiveX.
Duplexní tisk je záležitostí ovladače tiskárny, proto sem volil zobrazení náhledu před tiskem, kde si můžeš zvolit tiskárnu a případně upravit nastavení, místo přímého tisku na výchozí tiskárnu.
Ukládání souborů bude řešeno jak? Ručně nebo pomocí makra ?
Hm . Blbý no.
A co se takhle s námi podělit o informace, jakým způsobem má tenhle "test" vlastně fungovat?!
Upraveno pro tisk bez "Titulku"
V předchozí odpovědi vyměněna příloha! Podařilo se mi vložit soubor, který obsahoval chybu v kódu
Třeba takto:
Ber to jako pokus o řešení. Soubor do kterého se má "kopírovat" se sám otevře a proběhne přenos dat a uložení. Pokud doplníš hodnoty a znovu klikneš na tlačítko dojde a "aktualizaci" a opětovnému uložení.
Data se přenášejí přes pole, tedy jen hodnoty nikoliv formátování.
@Lubo
Osobně považuji za nejrychlejší, pokud netrvám na použití ClearContents, variaci na téma: Načíst do pole oba sloupce, příslušné pole nahradit prázdným řetězcem a pak celé pole vrátit zpět.
Dobrej tip, v jednoduchosti je síla.
To elnino
To ukládání oblastí do pole a opětovné spojení je zajímavá "fičura"
Diky za to, ukládám do archivu.
I když celá věc byla na konec zbytečná, Celý sloupec vlastně znamená rozsah 1 až 500
To elnino:
Ahoj, šel sem na to v podstatě stejně viz soubor, ale mám velkou oblast dat A1:A40200 viz tazatelův požadavek - aby mi to zkontrolovalo celý sloupec
Makro však zdechne, vlastně obě.
Přetečení rng ???
Máš nějaký elegantní tip, jak z toho ven?
Sheets("STATISTIKA").Cells(RNG.Row, 2).PasteSpecial xlPasteValues
A?
Pokud sem nevložíš vzorový soubor, tak se nikam nepohnem!
44101 = 27.9.2020
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
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.