Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  4 5 6 7 8 9 10 11 12   další » ... 37

Zpravidla se vytvoří ručně sada grafů, u nichž se pak přes VBA mění zdroj dat, obsažených v připojených a měnících se tabulkách. Vytváření samotných grafů pomocí VBA je samozřejmě možné, ale dost náročné. Asi nejlepší a nejjednodušší je pomocí záznamníku maker zapsat si ruční vznik grafu a vzniklý kód pak přizpůsobit specifickým požadavkům. Pokud se v tom neutopíte, pusťte se do vlastní tvorby. Je to dobrá hračka, plná různých překvapení...

Tak tady je zase obrázek z mých šachů s rozehranou partií. Hlídá to pořadí a oprávněnost tahů včetně šachů, rošád a braní mimochodem. Umí měnit pěšce za figuru. Partii je možno vrátit o libovolný počet tahů zpět. Může posloužit jako šachy pro dva hráče i pro analýzu šachových úloh. Hru proti počítači to neumí.

Já tento případ vyhodnocuji jako závažnou chybu chování Excelu. Rozkopírování vzorce by mělo ve všech případech vést na úplnou kopii vzorce pro zápis v notaci R1C1. V tomto případě zní rozkopírované vzorce pro B1:B5 následovně:
=SUM(RC1:R2C[-1])
=SUM(RC1:R2C[-1])
=SUM(R2C1:RC[-1])
=SUM(R2C1:RC[-1])
=SUM(R2C1:RC[-1])
Počínaje vzorcem v B3 se zápis R1C1 mění, což je jasné porušení pravidla o rozkopírování vzorců. S tím jsem se zatím nikde nepotkal.

Co asi takhle:
=VELKÁ(ZLEVA(A2;1)) & MALÁ(ZPRAVA(A2;DÉLKA(A2)-1))

Pokud jsem správně pochopil požadavek, měla by ho splnit následující událostní procedura, umístěná v objektu ThisWorkbook:
Private Sub Workbook_Open()
With Sheets("Chráněný List")
.Unprotect Password:="Heslo"
With .UsedRange
.Locked = False
.SpecialCells(xlCellTypeConstants).Locked = True
.SpecialCells(xlCellTypeFormulas).Locked = True
End With
.Protect Password:="Heslo"
End With
End Sub
Literály Chráněný list a Heslo je nutno nahradit skutečným jménem listu a vlastním heslem.

Již dlouho používám pro zasílání e-mailů z Excelu (i s více adresáty a s přílohami) proceduru od C.Pearsona, která se obejde bez služeb Outlooku. Bližší informace lze nalézt na http://www.cpearson.com/excel/Email.aspx

Přikládám pomůcku, která pomocí KT vytvoří seznam unikátů, případně doplněný o frekvence výskytu jednotlivých unikátů ve zdrojovém seznamu.

Chyba bude jinde. Následuje pokusný kód:
Sub Pokus()
Dim AA, BB
AA = Range("A1:E60000")
BB = Range("F1:K60000")
MsgBox AA(60000, 5) & " " & BB(60000, 5)
End Sub
Zdrojové buňky jsem naplnil a proceduru jsem spustil. Proběhla bez závad bez hlášení jakékoliv chyby.

Tím, že zrušíte KT a ponecháte si jen její data, se samozřejmě ztratí kouzlo té KT, aby se mohla aktualizovat podle změn ve zdrojových datech.
Pro schopnost aktualizace KT je důležité také převést zdrojovou tabulku na ExcelTable, jak to provedl eLCHa. Taková tabulka bude automaticky reagovat i na změnu počtu řádků po "Obnovit" (bez nutnosti redefinovat zdrojovou oblast).

Excel není pro psaní her moc vlídné prostředí, zejména když je nutné řešit problémy s pohybem, s grafikou a interakcemi mezi objekty. Na hrách pro Excel bývají proto zajímavější techniky, použité pro řešení takových problémů, než hra samotná. Někdy je dokonce možné takové techniky použít i pro vážnější věci, než jsou hry.
Předpokládám, že jako mnozí jiní, jsem za dlouhá léta s Excelem napsal řadu her. Od simulátorů pro Rubikovu kostku a šachy, hry proti počítači jako je Reversi, skládačky typu Splitting Images k rébusům jako "15", Pexeso nebo hry s pohybem (jako je Tetris nebo Pacman). Asi nejvíc času pro hry jsem věnoval sudoku. Mnohé z těchto her lze najít na internetu v profesionálnější podobě ve vhodnějším prostředí, než je Excel. Jejich realizace v Excelu byla pro mne laboratoří pro hledání technik, které by umožnily splnit mnohé neobvyklé požadavky, vedoucí k požadovanému chování úlohy. Proto nepokládám psaní her v Excelu za ztracený čas, ale za zdroj poučení pro vývojáře.

Řešení od eLCHa je samozřejmě řešitelsky nejjednodušší. Převod vstupní tabulky na ExcelTable není nezbytný (účelný ovšem je).
Pokud by Vám výsledek v podobě KT nevyhovoval, pak vytvořenou KT převedete snadno na prostou datovou oblast následovně:
- vyberte celou KT do schránky pomocí Ctrl+C
- prostřednictvím Domů / Vložit / Hodnoty vraťte obsah schránky na list; KT na listu ponechá svá data a sama zmizí.

Pro ty, kteří si stáhli první přílohu a nechtějí stahovat tu druhou: heslo k VBA projektu Pacmana je VOJTA2004

Chybka se vloudila 7 ! V nové příloze to už snad bude lepší...

Třináctiletý Vojta za mnou přišel s tím, že mu obrazec "částečný kruh" v Excelu připomíná figurku Pacmana a jestli bych takovou figurku uměl naučit, aby klapala hubou. Výsledkem je hra, ve které ten Pacman v nestandardní roli běhá po ohradě, požírá saláty a vyhýbá se jedovatým ježkům. Navíc se Vojta při ní viditelně baví.
Po technické stránce je úloha zajímavá tím, že se musela popasovat hned se třemi problémy, které Excelu nejdou moc pod nos: (1) plynulý pohyb grafických objektů po obrazovce, (2) zvukové efekty jako reakce na události, spojené s pohybem, (3) reakce na ruční vstupy do běžícího algoritmu.
Kdo má zájem, může si můj letošní dárek v vánocům stáhnout. Kód úlohy je volně k dispozici. Sešit i zvukové soubory v zipu je nutno rozbalit do společné složky.

Další možnost (bez maker) je sehrání všech odpovědních listů do jednoho společného sešitu. Vzhledem k totožné struktuře listů pak lze posčítaný výsledek získat pomocí vzorce, sčítajícího stejnou buňku na listech v definovaném rozsahu listů.


Strana:  1 ... « předchozí  4 5 6 7 8 9 10 11 12   další » ... 37

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