to elCHa: Mě to neskácí, ale pokládám za přirozené, že zaslané sešity fungují. Ten formulář má úplně blbou chybu a už po prostém UserForm1.Show dostanu ránu do čenichu. Alespoň otevřít by se měl!
Jak jsem slíbil, jsem tu a se mnou demo v příloze. Obsahuje dva formuáře:
- první z nich jen ukazuje, jak pracuje změna velikosti formuláře na výšku i na šířku. Vnitřní boxy pracují ve třech módech: (1) pevný: box se změnou velikosti formuláře nemění a může být zmenšením formuláře částečně i úplně zakryt, stejně jako se může teprve po zvětšení formuláře objevit; (2)ukotvený: levý horní roh boxu má kotvu, pravý dolní roh se stěhuje spolu s úchytem (box mění velikost); (3) plovoucí: box se stěhuje spolu s úchytem a zachovává si svou velikost.
- druhý formulář mění pouze svou šířku a obsahuje jak ukotvené, tak plovoucí prvky. Formulář je použit pro úlohu FormulaTranslator, která byla předmětem diskuze na fóru před pár dny. Jeho specialitou je skrytí excelské aplikace po dobu zobrazení formuláře.
Demo jsem psal se záměrem zjednodušit život ostatním, kdyby je jim formulář s proměnnou velikostí hodil do krámu
to Lubo: tohle už je vlídnější na použití. API funkcí je tam výrazně méně . Já jsem ale mezitím objevil příčinu zádrhele v algoritmu od Andy Popa, který jsem našel u Walkenbacha. Tam žádné API funkce nejsou, což beru za velkou přednost toho řešení.
Řešení jsem rozhýbal a pokouším se napsat svoje demo tak, aby ho mohli použít běžní vývojáři, kteří mají z API funkcí hrůzu. Jakmile usoudím, že to může jít do světa, šoupnu to sem na fórum.
Pánové, dík za pomoc!
Pyšný na to nejsem, ale řešení to je! Pan profesor přes lineární algebru by mi za takové řešení navrhl odebrání diplomu !
To vypadá nejspíš na optimalizační úlohu s hledáním optimálního řešení po vylepšovacích krocích. Pokud vím, Excel má nástroje (snad v rámci Řešitele), které by mohly pomoci při hledání nejlepšího možného řešení. Bohužel s tím ale v Excelu nemám žádné zkušenosti. V žádném případě si ale nemyslím, že by na to šlo vytvořit vzorce.
Dík! To je krásné, čistě udělané a prakticky dokonalé řešení. To plně platí z pohledu té demonstrace. Horší je to s možností její aplikace. Ta demonstrace honí strašně moc zajíců najednou, obsahuje kopec API funkcí a vyznat se v tom, co za co může, pro mne bude oříšek (s velikostí nejmíň pořádného kokosového).
Jen velmi nerad používám černé skříňky, u kterých neumím rozlišit smysl věcí. Bullen je vynikající machr typu David Copperfield a své králíky tahá z klobouku s velkou grácií. Už se vidím, až se to pokusím udělat sám. Nejspíš z toho bude groteska...
Našel jsem alternativu v manuálu od Walkenbacha, který se odvolává na dalšího mága, Andy Popa. Jde o řešení bez API funkcí, což je lákavé. Někde cestou do českého vydání bohužel došlo ke zmatení popisu řešení, takže návod je bohužel nefunkční.
Mám teď dvě možnosti: rozluštit funkční, ale nečitelný kód od Bullena, nebo rozluštit čitelný, ale nefunkční text od Walkenbacha. A teď, babo, raď!
Ví někdo z vás, jak napsat formulář, u kterého lze během práce s ním měnit velikost jeho plochy včetně velikosti jeho aktivních prvků? Příklad dialogového okna s uvedenými vlastnostmi je v příloze a pochází z dialogu pro psaní vzorců pro názvy. Jde mi o úchyt vpravo dole v okně, za který lze myší měnit velikost jak okna, tak textboxu v něm.
Jde mi o to, jestli srovnatelnou schopnost lze udělit uživatelskému formuláři. Jestli ano, hledám postup pro vytvoření takového formuláře.
Já myslel na to, aby to rychle počítalo, ne na to, co nemáte rád. Pokud vám zrychlení práce nestojí za to, abyste použil pole, pak je to vaše volba...
V příkladu chybí úvodní tečky před LisBox. A ještě něco: pokud se sloupce nevejdou na šířku, prvek se sám doplní o vodorovný posuvník; to samé platí pro výšku ListBoxu se svislým posuvníkem.
Podle mých testů mi vychází jako nejrychlejší naplnění ListBoxu z dvourozměrného pole, např.
Dim Pole(1 To 20, 1 To 15)
' naplnění Pole hodnotami
With UserForm1
ListBox1.ColumnCount = 15
ListBox1.List = Pole
End With
Tohle není z mé hlavy, tak to mabízí Walkenbach. Pokud nedefinuji ColumnWidths, vzniknou sloupce 1 palec široké. Opět ne z mé hlavy, tentokrát z excelského helpu.
Prakticky shodný postup jsem kdysi také použil a také jsem s ním měl úspěch. Pak mi nějaký koumák předvedl, jak zavřít sešit, aniž by byla použita událost Before_Save, která vracela viditelnost datových listů do skrytého stavu. A příští otevření sešitu se zakázanými makry ukazovalo data, která měla zůstat skrytá. Pokazilo mi to náladu, ale uživateli jsem nic neřekl. A ten si na oplátku nikdy nestěžoval, že by někdo moji ochranu prolomil.
Excel není datově bezpečné prostředí a asi nikdy takové nebude. Kdo je koumák, něco vždycky vymyslí. Ochrany dat v Excelu slouží k tomu, aby nedošlo k náhodnému a nechtěnému styku uživatelů s chráněnými daty. Proti záměrnému a chytrému útoku ostatně nejsou ochráněna ani ta nejtajnější data těch nejtajnějších institucí...
Jestli vidím dobře, odkaz je na letošní příspěvek. Já ten "svůj" Immediate nezpracně užívám už cca deset let... Nevím, proč psát rutinu na něco, co se bez ní obejde.
Mám pocit, že jste si postavil hlavu a použití funkce NEPŘÍMÝ.ODKAZ jste povýšil nad důvod, pro který jej potřebujete. Vše nasvědčuje tomu, že tudy cesta nevede a že s Járou Cimrmanem získáváte body za hledání neprůchodných cest. Podle toho, jak jste popsal svůj problém, je ZVOLIT dostatečným a naprosto přijatelným řešením popsané potřeby.
Ještě malá poznámka k automatickému spouštění úloh: sám to nepoužívám, ale už několikrát jsem tu potřebu komentoval. Windows odedávna obsahuje Plánovač úloh, který automatické spouštění úloh umí. Z mně neznámých důvodů vždycky byl a dál je nějak schovaný, takže o něm většinou lidé neví. Ve W-10 jsem ho teď našel v nabídce Všechny aplikace / Nástroje pro správu Windows.
Nějak se nechytám. Když po dobu vaší dovolené nikdo do lhůtníku nepoleze, nebude se v té době žádným způsobem aktualizovat. Pak nic nebrání tomu, abych pomocí automatického filtru vygeneroval dopředu seznamy pro 1 až 7 a abych dal ty výstupy "svým klukům" předem do ruky.
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.