Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  28 29 30 31 32 33 34 35 36   další »

Pokud nemáte v ruce nic chytřejšího, než to moje postupné škrtání, pak máte naprostou pravdu, že "můj" automat skončí tím, že už nesmí smazat ani minimum, ani maximum.
Když ten zbytek nebude moc rozsáhlý, šlo by v něm dál škrtat metodou pokus / omyl. S dobře vymyšlenou rekurzí byste nejspíš zpravidla našel řešení hodně blízké optimu. Pokud je cílem najít hodnotu minimálního rozdílu, tak tu dostanete už v rámci první fáze.
Problém ovšem spočívá v tom, jestli zbytek po "mém" škrtání obsahuje alespoň jedno přípustné řešení. Mohlo by se stát, že zbytek nepůjde plně zredukovat, protože některá ze škrtnutých mezních hodnot musí v úloze zůstat, aby úloha zůstala řešitelná do konce.
Kdysi dávno jsem se optimalizacemi zabýval profesionálně. Už jsem všechno zapomněl, protože od těch časů uběhlo třicet let. Přesto si dovolím dát vám tip: zkuste se zeptat strýčka Google na heslo "branch and bound", případně na variace toho pojmu. Jde o stařičkou, ale velice obecnou metodu hledání optimálního řešení. Metoda dává záruku nalezení optima, pokud dostane na hledání dostatečný čas.

Spadnul mi kámen ze srdce 5! Notaci R1C1 pokládám za geniální vynález např. kvůli tomu, že všechny rozkopírované vzorce mají ve své oblasti totožné znění R1C1. Jejich jazyk mi je ale cizí a těžko stravitelný (čtu ho pomalu a nerad).
Jediný skutečný problém s notací při psaní vzorců podle mne vzniká, pokud vzorec plním kódem VBA. Tam musím zapomenout na použití .FormulaLocal, abych nezpůsobil malér při budoucí práci s jinojazyčným Excelem. Ale vložení vzorce v notaci A1 do .Formula vždy dokáže nahradit vložení odpovídajícího vzorce v notaci R1C1 do .FormulaR1C1.
To říká mých patnáct let manželství s Excelem.

Mám upřímný (a zcela neosobní) dotaz: je opravdu nutné řešit nastavení těch vzorců v notaci R1C1? Podle mých zkušeností (s výjimkou několika málo situací, v nichž help přímo uvádí povinnost použít specifickou notaci) lze vzorec psát, "jak mi zobák narostl" a teprve na samém konci (v případě nezbytnosti) použít převod na R1C1. Domníval jsem se, že nedávná diskuse o automatických převodech notace vzorců do věci vnesla jasno. Je možné, že jsem něco podstatného přehlédl ?!?

Vracím se k poznámce elCHa o možnosti využít vlastnosti .Tag aktivních prvků pro jednodušší práci při psaní formulářů s proměnlivou velikostí. To je dobrý nápad, který jsem s úspěchem zabudoval do svého dema. Navíc jsem události propracovanějšího druhého formuláře doplnil o řádky kódu pro změny velikosti na výšku. Jen jsem je "zaremoval", protože je ten formulář nevyužívá.
Při použití jako vzoru pro jinou úlohu se to může hodit. Upravenou verzi posílám v příloze.

Politik by pravil, že jde o hluboké nedorozumění. Vůbec jsem nechtěl být útočný. Vycházím z toho, že naše příspěvky do fóra čtou i jiní než my dva. Pokládám za rozumné, aby v příspěvcích pokud možno nebyly zbytečné chyby, které snižují jejich využitelnost. Nefunkčnost sešitu pokládám za zbytečnou chybu. To je vše, co jsem chtěl říct.
Za jakýkoliv osobní nádech mých příspěvků se dozadu i dopředu omlouvám. Jediným jejich smyslem jsou kvalitní služby tohoto fóra. Za tu chvilku, co tady jsem, si u mne toto fórum získalo důvěru a úctu.
A co se týká reakcí - co jiného než reakce může doložit, že si příspěvek někdo přečetl a že dokonce měl chuť odpovědět. Reakce jsou podstatou diskuze. Uznávám, že by neměly dráždit.

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ě 1 . 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 2 !

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ď! 7

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.


Strana:  1 ... « předchozí  28 29 30 31 32 33 34 35 36   další »

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Aktivní diskuse